본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] JSP의 내장객체 알아보기

by 일단연 2023. 6. 14.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 JSP의 내장객체 알아보기 

코드 블록의 내장 객체

  • 내장 객체: Jasper가 만든 서블릿 내부의 존재하는, 미리 선언된 변수
    • Jasper가 service( )메소드를 만들면서 필요한 변수들을 만듦
  • 아래와 같이 page 변수를 선언하면 에러 발생
    • Jasper가 미리 service( )메소드에 page를 만들어뒀는데 사용자가 page를 선언하니까 같은 메소드 내에 중복돼서 충돌
<%
  int page = 1;
%>
  • 에러를 방지하고 적절하게 활용하기 위해 jsp를 만들 때 Jasper가 만드는 서블릿의 코드를 살펴봐야 함

 

내장 객체의 종류

  • HttpServletRequest.request, HttpServletResponse.response: 입력 및 출력 도구
  • PageContext.pageContext: 페이지 내에서 임시로 데이터를 저장할 수 있게 하는 setAttribute( ), getAttribute( )를 갖고 있음 - 내부에서만 사용
  • Http.Session.session: session 객체
  • ServletContext.application: application 객체 - 전역에서 사용
  • ServletConfig.config
  • JspWriter.out: 출력도구
  • Object.page: 해당 페이지의 객체를 참조

 

내장 객체 request: HttpServletRequest

  • request: 입력 도구

  • 사용자가 전달한 파라미터를 꺼내는 기능
    • getParameterNames( )
    • getParameter(name)
    • getParameterValues(name)
  • 쿠키 얻어내기: getCookies( )
  • 사용자가 요청하는 메소드 알아보기: getMethod( )
  • 세션 얻어내기: getSession( )
  • 서버의 프로토콜 알아내기: getProtocol( )
  • 요청자(클라이언트)의 IP 주소 알아내기: getRemoteAddr( )
  • 값을 꺼낼 때 인코딩 방식 지정: setCharacterEncoding( )
  • 헤더 정보 꺼내기
    • getHeaderNames( )
    • getHeaders(name)
  • 파라미터를 통하지 않고 바로 쿼리스트링 얻기: getQueryString( )

 

내장 객체 response: HttpServletResponse

  • response: 출력 도구

  • 헤더긴 하지만 컨텐츠 타입을 별도로 설정: setContentType
  • 커스터마이징된 헤더 심기
    • setHeader(name, value)
    • setDateHeader(name, date)
  • 에러코드, 메시지 전달: sendError(status, msg)
  • 다른 페이지에 응답 보내기: sendRedirect(url)
  • 쿠키 출력하기: addCookie( )
  • URL 인코딩하기: encodeURL(url)
  • 상태 코드 설정: setStatus(sc)

 

내장 객체 out: javax.servlet.jsp.JspWriter

  • out을 통해 출력할 수 있음
  • Jasper가 자동으로 out.write 처리를 해주기 때문에 실질적으로 직접 out을 쓸 일은 많이 없음

 

내장 객체 session: javax.servlet.http.HttpSession

  • 값이 저장되는 시간 활용하기
    • getCreationTime( )
    • getLastAccessedTime( )
    • getMaxInactiveInterval( )
    • setMaxInactiveInterval(t)
  • 세션 값 얻기: getAttribute(attr)
  • 세션 값 설정하기: setAttribute(name, attr)
  • 세션의 특정 값만 삭제: removeAttribute(name)
  • 세션을 종료하고 값 다 지우기: invalidate( )

 

내장 객체 application: javax.servlet.ServletContext

  • 서블릿들이 사용할 수 있는 공통의 도구를 제공

  • 실제 물리적인 경로 알아내기: getRealPath(path)