JSP는 9개의 내장 객체를 기본으로 가지고 있다. 아래는 그 종류와 설명에 대한 나열이다.
기본 객체 실제 타입 설명
기본 객체 | 실제 타입 | 설명 |
request | javax(jakarta).servlet.http.HttpServletRequest | 클라이언트의 요청정보 저장 |
response | javax.servlet.http.HttpServletResponse | 응답정보 저장 |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지의 정보 저장 |
session | javax.servlet.http.HttpSession | HTTP 세션 정보 저장 |
application | javax.servlet.ServletContext | 웹 애플리케이션 정보 저장 |
out | javax.servlet.jspJspWriter | JSP 페이지가 생성하는 결과를 출력할 때 사용하는 출력 스트림 |
config | javax.servlet.ServletConfig | JSP 페이지에 대한 설정정보 저장 |
page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 인스턴스 |
exception | java.lang.Throwable | 익셉션 객체(에러페이지에서만 사용) |
pageContext
이 중, JSP 페이지의 정보를 저장하고 있는 객체인 pageContext의 경우 응답 페이지 실행에 필요한 context 정보를 가지고 있으며 다른 8개의 기본객체에 접근하기 위한 객체이다.
ServletRequest servletRequest = pageContext.getRequest(); // request 기본객체를 구함
ServletResponse servletResponse = pageContext.getResponse(); // response 기본객체를 구함
HttpSession httpSession = pageContext.getSession(); // session 기본객체를 구함
ServletContext servletContext = pageContext.getServletContext(); // application 기본 객체를 구함
ServletConfig servletConfig = pageContext.getServletConfig(); // config 기본객체를 구함
JspWriter jspWriter = pageContext.getOut(); // out 기본객체를 구함
Exception exception = pageContext.getException(); // exception 기본객체를 구함
Object object = pageContext.getPage(); // page 기본객체를 구함
단, 여기서 getException()은 JSP 페이지가 에러페이지인 경우에만 의미가 있다.
request
클라이언트(웹 브라우저)의 http 요청 정보를 저장하고 있는 객체이다. 클라이언트의 요청 시마다 만들어진다. JSP 페이지에서 가장 많이 사용되는 기본 내장 객체이다.
/* 요청 파라미터 이름이 name인 값을 전달받는다. 없다면 null을 반환한다. */
String str = request.getParameter(String name);
/* 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달받는다. 없으면 null을 반환한다. */
String[] strArr = request.getParameterValues(String name);
/* 모든 요청 파라미터 이름과 값을 Enumeration 객체 타입으로 전달받는다. */
java.util.Enumeration<T> obj1 = request.getParameterNames();
/* 모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 전달받는다. */
java.util.Map<K, V> obj2 = request.getParameterMap();
response
클라이언트의 요청에 대한 응답 정보를 저장하고 있는 객체이다. 페이지의 헤더 정보를 입력하거나 페이지를 redirect 하는 용도로 많이 사용된다. 이 외에도 쿠키를 추가하거나 클라이언트로 상태, 에러 정보를 전송할 때 사용한다.
/* 쿠키 정보를 추가한다. */
response.addCookie(Cookie cookie);
/* 현재 페이지에서 다른 페이지("지정한 url")로 이동한다. */
response.sendRedirect(String location);
/* 상태 정보를 클라이언트로 전송한다. */
response.sendStatus(int status-code);
/* 에러 정보를 클라이언트로 전송한다. */
response.sendError(int error-code);
session
HTTP 세션정보를 저장하고 있는 객체이며 클라이언트 별로 생성된다.
/* 세션에 값을 저장한다. */
session.setAttribute(String name, Obejct value);
/* 세션에서 값을 가져온다. 해당 name이 없다면 null을 반환한다. */
Obejct value = session.getAttribute(String name);
/* 세션에서 특정 값을 삭제한다. */
session.removeAttribute(String name);
/* 모든 세션 값을 삭제한다. */
session.invalidate();
세션은 클라이언트 별로 생성되어 관리되므로 로그아웃 기능을 구현할 때는 주로 모든 세션 정보를 삭제하는 invalidate를 사용한다.
application
웹 애플리케이션에 대한 정보를 저장한다. 웹 애플리케이션을 표현하기 위한 객체이고 모든 jsp 파일이 공통적으로 공유하는 객체이다. 즉, 하나의 프로젝트에 하나의 객체만 존재한다.
/* 웹 컨테이너의 이름과 버전을 리턴한다. */
String str1 = application.getServerInfo();
/* 지정한 파일의 MIME 타입을 리턴한다. */
String str2 = application.getMimeType(String fileName);
/* 지정한 경로를 웹 애플리케이션 시스템 상의 경로로 변경하여 리턴한다. */
String path = application.getRealPath(String path);
/* 로그 파일에 message를 기록한다 */
application.log(String message);
out
JSP 페이지가 생성하는 결과를 출력할 때 사용되는 출력스트림이다.
JSP 페이지가 생성하는 모든 내용은 out 객체를 통해서 전송되며 JSP 페이지 내에서 사용되는 비-스크립트 요소들(일반적인 HTML이나 텍스트)은 out 기본객체에 그대로 전달되며, 값을 출력하는 표현식의 결과값 역시 out 기본 객체에 전달된다.
config
JSP 페이지에 대한 설정 정보를 저장하는 객체이다. 즉, 서블릿이 초기화될 때 참조해야 하는 정보를 가지고 있다가 서블릿에게 전달해 준다. config 객체를 통해서 서블릿의 구성 정보에 접근할 수 있다. config 객체는 컨테이너 당 1개의 객체가 생성되며 같은 컨테이너에서 서비스되는 모든 페이지는 같은 객체를 공유한다.
/* 모든 초기화 파라미터 이름을 리턴한다. */
Enumeration<String> params = config.getInitParameterNames();
/* 이름이 name인 초기화 파라미터 값을 리턴한다. */
String param = config.getInitParameter(String name);
/* 서블릿의 이름을 리턴한다. */
String servletName = config.getServletName();
/* 실행하는 서블릿 ServletContext 객체를 리턴한다 */
ServletContext servletContext = config.getServletContext();
page
JSP 페이지를 구현한 자바 클래스 인스턴스이다. 즉, JSP 페이지 그 자체를 가리키는 객체이다. this와 비슷한 역할을 한다.
exception
JSP 페이지에서 예외가 발생했을 때 처리해줄 수 있는 객체이다.
'백엔드 개발자라면 대답해야 할 100가지 질문' 카테고리의 다른 글
22. 세션의 동작 과정 (0) | 2024.06.27 |
---|---|
21. 세션과 쿠키의 차이점 (1) | 2023.12.14 |
19. Servlet과 JSP의 차이점 (0) | 2023.10.10 |
18. Deep Copy vs Shallow Copy (0) | 2023.10.05 |
17. 자바 리플렉션(reflection)이란 무엇인가? (0) | 2023.09.26 |
댓글