JSP의 내장 객체

굿거리·2023년 4월 19일
0

내장객체는 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개의 댓글