JSP 내장 객체(Implicit Objects)는 JSP 컨테이너가 JSP 페이지를 서블릿으로 변환할 때 자동으로 생성하여 제공하는 객체.
JSP 내장 객체는 스크립틀릿(<% ... %>), 표현식(<%= ... %>), 선언문(<%! ... %>) 내에서 사용할 수 있다.
내장 객체타입설명
request | HttpServletRequest | 클라이언트의 HTTP 요청 정보를 담고 있는 객체. 요청 파라미터, 헤더, 쿠키, 클라이언트 IP 주소, 요청 메서드(GET, POST 등), 세션 등에 접근할 수 있다. |
response | HttpServletResponse | 클라이언트에 대한 HTTP 응답을 제어하는 객체. 응답 헤더 설정, 상태 코드 설정, 리다이렉트, 쿠키 추가 등에 사용. |
out | JspWriter | JSP 페이지의 출력 스트림. out.print(), out.println() 등을 사용하여 클라이언트에 데이터를 출력. 표현식(<%= ... %>)은 내부적으로 out.print()를 호출. |
session | HttpSession | 클라이언트별 세션 정보를 관리하는 객체. 세션 속성(attribute)을 저장, 조회, 제거할 수 있다. 세션은 웹 브라우저가 열려 있는 동안 유지. |
application | ServletContext | 웹 애플리케이션 전체의 컨텍스트 정보를 담고 있는 객체. 애플리케이션 전체에서 공유되는 속성(attribute)을 저장, 조회, 제거할 수 있다. 웹 애플리케이션 시작 시 생성되고 종료 시 소멸됨. |
pageContext | PageContext | 현재 JSP 페이지의 실행 컨텍스트 정보를 제공하는 객체. 다른 내장 객체에 접근하거나, 페이지, 요청, 세션, 애플리케이션 스코프의 속성(attribute)을 관리하고, 페이지 이동(forward, include) 등을 수행할 수 있다. |
config | ServletConfig | JSP 페이지(서블릿)의 초기화 파라미터(web.xml에 설정)를 가져올 수 있는 객체. |
page | java.lang.Object | 현재 JSP 페이지를 처리하는 서블릿 인스턴스 자신을 가리킴. (Java의 this와 유사). 일반적으로 직접 사용되는 경우는 드물다. |
exception | java.lang.Throwable | 예외 처리 페이지(<%@ page isErrorPage="true" %>)에서만 사용 가능한 객체. 발생한 예외 객체를 참조. |
주요 내장 객체의 메서드:
- request:
- getParameter(String name): 요청 파라미터 값을 가져온다.
- getParameterValues(String name): 동일한 이름의 여러 파라미터 값을 배열로 가져온다.
- setAttribute(String name, Object value): 요청 속성(attribute)을 설정.
- getAttribute(String name): 요청 속성 값을 가져온다.
- getSession(): 현재 세션 객체를 가져온다.
- getRemoteAddr(): 클라이언트의 IP 주소를 가져온다.
- getMethod(): HTTP 요청 메서드(GET, POST 등)를 가져온다.
- getHeader(String name): HTTP 요청 헤더 값을 가져온다.
- getCookies(): 클라이언트가 보낸 쿠키 배열을 가져온다.
- response:
- setContentType(String type): 응답의 MIME 타입과 문자 인코딩을 설정.
- setHeader(String name, String value): 응답 헤더를 설정.
- sendRedirect(String location): 지정된 URL로 리다이렉트.
- addCookie(Cookie cookie): 응답에 쿠키를 추가.
- setStatus(int sc) : HTTP 응답 상태 코드를 설정.
- out:
- print(String s): 문자열을 출력.
- println(String s): 문자열을 출력하고 줄바꿈.
- clearBuffer(): 출력 버퍼를 비움.
- session:
- setAttribute(String name, Object value): 세션 속성을 설정.
- getAttribute(String name): 세션 속성 값을 가져온다.
- removeAttribute(String name): 세션 속성을 제거.
- invalidate(): 세션을 무효화 (로그아웃).
- getId(): 세션 ID를 가져온다.
- isNew(): 현재 요청에서 세션이 새로 생성되었는지 확인.
- setMaxInactiveInterval(int interval): 세션의 유효 시간(초)을 설정.
- application:
- setAttribute(String name, Object value): 애플리케이션 속성을 설정.
- getAttribute(String name): 애플리케이션 속성 값을 가져온다.
- removeAttribute(String name): 애플리케이션 속성을 제거.
- getRealPath(String path): 웹 애플리케이션 내 파일의 실제 경로를 가져온다.
- getContextPath(): 웹 애플리케이션의 컨텍스트 경로를 가져온다.
- getResourceAsStream(String path): 웹 애플리케이션 내의 리소스를 InputStream 형태로 가져온다.
- pageContext:
- getRequest(), getResponse(), getSession(), getOut(), getApplication(), getConfig(), getPage(), getException(): 다른 내장 객체에 접근.
- setAttribute(String name, Object value, int scope): 지정된 스코프(page, request, session, application)에 속성을 설정.
- getAttribute(String name, int scope): 지정된 스코프에서 속성 값을 가져온다.
- removeAttribute(String name, int scope): 지정된 스코프에서 속성을 제거.
- findAttribute(String name): page, request, session, application 순서로 속성을 검색하여 가장 먼저 찾은 값을 반환환.
- forward(String page): 지정된 페이지로 포워딩.
- include(String page): 지정된 페이지를 포함.
- handlePageException(Exception e): 예외를 처리.
예시:
Java
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP Implicit Objects</title>
</head>
<body>
<h1>JSP 내장 객체 예제</h1>
<p>클라이언트 IP 주소: <%= request.getRemoteAddr() %></p>
<p>요청 메서드: <%= request.getMethod() %></p>
<%
// 세션에 속성 저장
session.setAttribute("username", "testuser");
%>
<p>세션 ID: <%= session.getId() %></p>
<p>세션에 저장된 사용자 이름: <%= session.getAttribute("username") %></p>
<%
// 애플리케이션에 속성 저장 (모든 사용자, 모든 페이지에서 공유)
application.setAttribute("appVersion", "1.0");
%>
<p>애플리케이션 버전: <%= application.getAttribute("appVersion") %></p>
<p> 컨텍스트 이름: <%= application.getContextPath()%></p>
</body>
</html>
'개발 > JSP' 카테고리의 다른 글
<%@ include %> vs <jsp:include > (0) | 2025.03.08 |
---|---|
JSP 액션태그 (0) | 2025.03.08 |
JSP 지시어와 스크립트 요소 (0) | 2025.03.08 |
JSP는 어떻게 작동할까? (0) | 2025.03.08 |
JSP - EL(Expression Language) (0) | 2025.03.05 |