JSP(JavaServer Pages)에서는 내장 객체(Built-in Objects)를 통해 웹 애플리케이션 개발을 쉽게 할 수 있습니다.
이 객체들은 변환된 servlet이 실행될 때 자동으로 생성되며 개발자가 직접 선언하지 않아도 사용할 수 있습니다.
1. JSP 내장 객체 종류
JSP에는 총 9개의 내장 객체가 있습니다:
1. request (HttpServletRequest)
2. response (HttpServletResponse)
3. session (HttpSession)
4. application (ServletContext)
5. out (JspWriter)
6. pageContext (PageContext)
7. config (ServletConfig)
8. page (Object)
9. exception (Throwable)
2. 내장 객체 상세 설명
1. request (HttpServletRequest)
클라이언트 요청에 대한 정보를 담고 있는 객체.
• 주요 역할:
• 요청 파라미터 가져오기 (getParameter())
• 요청 헤더 정보 (getHeader())
• 요청 방식 확인 (GET, POST, 등) (getMethod())
• 예시:
<%
String name = request.getParameter("name");
out.println("Name: " + name);
%>
2. response (HttpServletResponse)
서버에서 클라이언트로 전송할 응답 정보를 담고 있는 객체.
• 주요 역할:
• 응답 상태 코드 설정 (setStatus())
• 헤더 추가 (setHeader())
• 페이지 이동 (sendRedirect())
• 예시:
<%
response.setContentType("text/html; charset=UTF-8");
response.sendRedirect("newPage.jsp");
%>
3. session (HttpSession)
클라이언트별로 세션을 관리하는 객체.
• 주요 역할:
• 세션 데이터 저장 (setAttribute())
• 세션 데이터 가져오기 (getAttribute())
• 세션 유효 시간 설정 (setMaxInactiveInterval())
• 예시:
<%
session.setAttribute("user", "Alex");
String user = (String) session.getAttribute("user");
out.println("User: " + user);
%>
4. application (ServletContext)
웹 애플리케이션 전체에서 공유되는 객체.
• 주요 역할:
• 애플리케이션 범위에서 데이터 저장 (setAttribute())
• 초기화 매개변수 가져오기 (getInitParameter())
<%
application.setAttribute("appName", "MyApp");
String appName = (String) application.getAttribute("appName");
out.println("Application Name: " + appName);
%>
5. out (JspWriter)
클라이언트에게 출력할 내용을 담는 객체.
• 주요 역할:
• HTML 콘텐츠 출력 (out.print() 또는 out.println())
• 버퍼 비우기 (flush())
• 예시:
<%
out.println("<h1>Hello, World!</h1>");
%>
6. pageContext (PageContext)
페이지 전반에 걸쳐 사용되는 정보를 관리하는 객체.
• 주요 역할:
• 속성 저장소: page, request, session, application에 접근
• JSP 태그 처리 지원 (findAttribute(), getAttribute())
• 예시:
<%
pageContext.setAttribute("message", "Welcome");
String msg = (String) pageContext.getAttribute("message");
out.println(msg);
%>
7. config (ServletConfig)
서블릿 설정 정보를 담고 있는 객체.
• 주요 역할:
• 초기화 매개변수 가져오기 (getInitParameter())
• ServletContext 가져오기 (getServletContext())
• 예시:
<%
String encoding = config.getInitParameter("encoding");
out.println("Encoding: " + encoding);
%>
8. page (Object)
현재 JSP 페이지를 가리키는 객체.
• 특징:
• this와 같은 역할
• Servlet으로 변환된 JSP 클래스의 인스턴스를 나타냄
• 예시:
<%
out.println("Class: " + page.getClass().getName());
%>
9. exception (Throwable)
에러 페이지에서 예외 정보를 담고 있는 객체.
• 특징:
• 오류 발생 시 자동으로 생성됨
• <%@ page isErrorPage="true" %> 설정 필요
• 예시:
<%@ page isErrorPage="true" %>
<%
out.println("Exception: " + exception.getMessage());
%>
3. 내장 객체의 사용 범위와 특징
• page: 현재 JSP 페이지 내에서만 사용 가능.
• request: 요청이 끝날 때까지 유효 (페이지 이동 시 유지 안 됨).
• session: 사용자별 세션이 끝날 때까지 유지.
• application: 애플리케이션 전역에서 사용 가능.
• exception: 에러 페이지에서만 사용 가능.
4. 정리 및 팁
• 데이터 공유 범위에 따라 적절한 객체 사용이 필요.
• page < request < session < application 순으로 범위가 커짐.
• 에러 처리는 exception 객체와 에러 페이지를 함께 사용.
• JSP 기본 문법과 내장 객체를 잘 활용하면 효율적인 웹 애플리케이션을 개발할 수 있음.