JSP의 내장 객체

굿거리·2023년 4월 19일

내장객체는 JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수로, 사용하고자 하는 변수와 메소드로 접근한다. JSP 페이지에서 사용하게 되는 특수한 레퍼런스 타입의 변수는 선언과 객체 생성 없이 사용할 수 있다. 이유는 JSP 페이지가 서블릿으로 변환될 때 JSP 컨테이너가 자동적으로 제공하기 때문이다.

public void _jspService(final ...request, final ...response) throws ...ServletException {
	final javax.servlet.jsp.PageContext pageContext;
	javax.servlet.http.HttpSession session = null;
	final javax.servlet.ServletContext application;
	final javax.servlet.ServletConfig config;
	javax.servlet.jsp.JspWriter out = null;
	final java.lang.Object page = this;
}

위와 같이 _jspService라는 메서드에 매개변수로 request와 resoponse가 있고, 아래에 객체들이 변수로 선언되어있다. 따라서 이 객체명들은 jsp 내에서 <% String out = "선언" %>과 같이 변수명으로 이용할 수 없다.

내장객체의 종류는 9가지로, 다음과 같다.

사진 출처 : https://velog.io/@ansalstmd/JSP5.-%EB%82%B4%EC%9E%A5-%EA%B0%9D%EC%B2%B4

기본적으로 request, session, application, pageContext 내장객체는 속성(attribute)값을 저장하고 읽을 수 있는 메소드인 setAttribute() 메소드와 getAttribute() 메소드를 제공한다. 속성값을 저장하고 읽을 수 있는 기능은 내장객체를 사용해서 JSP 페이지들 및 서블릿 간에 정보를 주고받을 수 있게 해준다. 아래에서 소개하는 것들은 주로 사용하는 내장객체들이다.

request

request는 http 헤더와 http 바디로 구성되어있다. JSP 페이지에서는 HttpServletRequest 객체를 request 객체명으로 사용한다.

  • getParameter(name) : String
    파라미터 변수 name에 저장된 값을 얻어내는 메소드로, 파라미터 변수 name에 해당하는 변수명이 없으면 null값을 리턴한다.
  • getParameterValues(name) : String[]
    name에 저장된 모든 변수값을 얻어내는 메소드로, String[]을 리턴한다.
  • getParameterNames() : Enumeration
    요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴한다
  • setCharacterEncoding()
    요청의 내용을 해당 타입으로 인코딩한다.

response

response는 브라우저로 응답할 정보를 가지고 있다.

  • setHeader(name, value)
    헤더 정보의 값을 수정하는 메소드로, name에 해당하는 헤더 정보를 value값으로 설정한다.
  • setContextType(type)
    웹 브라우저 요청의 결과로 보일 페이지의 contentType을 설정한다.
  • sendRedirect(url)
    페이지를 이동시키는 메소드로, url로 주어진 페이지로 제어가 이동한다.

out

JSP 페이지가 웹 브라우저에게 보내는 모든 정보는 out 객체를 통해서 전송된다. 여기서 모든 정보는 JSP 스크립트 요소뿐만 아니라 비스크립트 요소인 HTML, 일반 텍스트들도 모두 포함된다.

표현식(<%=문장%>)과 out.println()은 둘 다 브라우저에 출력시키는 똑같은 역할을 수행한다. JSP 페이지가 서블릿으로 변환될 때 <%=문장%> 부분은 out.println("문장")으로 변환되어 실행된다.

  • println()
    일반적으로 우리가 사용하는 System.out.println()과 기능은 동일하다. 다만 콘솔에 출력되는 System.out.println()과 다르게 콘솔이 아닌 브라우저에 출력되게 된다.

session

session은 웹 브라우저의 요청 시, 요청한 웹 브라우저에 관한 정보를 저장하고 관리하는 내장객체이다. session 내장객체는 웹 브라우저(클라이언트)당 1개가 할당된다. 따라서 주로 회원관리 시스템에서 사용자 인증에 관련된 작업을 수행할 때 사용된다. 일반적으로 setAttribute()와 getAttribute()로 관리하며, 웹 컨테이너가 기본적으로 session을 만들어주기 때문에 만약 session을 사용하고 싶지 않다면 지시자에서 <%@ page session = false %>로 지정해주면 된다.

  • getId() : String
    해당 웹 브라우저에 대한 고유한 세션 ID를 리턴한다.
  • setMaxInactiveInterval(time) : void
    해당 세션을 유지할 시간을 단위로 설정한다.
  • invalidate() : void
    현재 정보의 유지로 설정된 세션의 속성값을 모두 제거한다. 주로 세션을 무효화시킬 때 사용된다.

exception

exception은 JSP 페이지에서 예외가 발생하였을 경우, 예외를 처리할 페이지에 전달되는 객체이다. exception 객체는 페이지 지시자에서 <%@ page isErrorPage = true %>로 지정한 JSP 페이지에서만 사용 가능하다.

  • getMessage() : String
    발생한 예외의 메시지를 리턴한다.
  • toString() : String
    발생한 예외 클래스명과 메시지를 리턴한다.
  • printStackTrace() : String
    발생한 예외를 역추적하기 위해 표준 예외 스트림을 출력한다. 예외 발생 시 예외가 발생한 곳을 알아낼 때 주로 사용된다.
profile
개발자를 향해

0개의 댓글