Rylah's Study & Daily Life
07. JSP Page Implicit Object 본문
1. 내장 객체(Implicit Object)
- 내장객체는 JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수(또는 객체)로 사용하고자 하는 변수와 메소드로 접근
- JSP 페이지에서 사용하게 되는 특수한 레퍼런스 타입의 변수가 아무런 선언과 객체 생성 없이 사용할 수 있음.
2. 내장 객체(Implicit Object)의 종류
| 내장 | 객체 리턴 타입(Return Type) | 설명 | 
| request | javax.servlet.http.HttpServletRequest javax.servlet.ServletRequest | 웹 브라우저의 요청 정보를 저장하고 있는 객체 | 
| response | javax.servlet.http.HttpServletResponse javax.servlet.ServletResponse | 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 | 
| out | javax.servlet.jsp.JspWriter | JSP 페이지를 출력할 내용을 가지고 있는 출력 스트림 객체 | 
| session | javax.servlet.http.HttpSession | 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 저장 객체 | 
| application | javax.servlet.ServletContext | 웹 애플리케이션 Context의 정보를 저장하고 있는 객체 | 
| page Context | javax.servlet.jsp.PageContext | JSP에 대한 정보를 저장하고 있는 객체 | 
| page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 객체 | 
| config | javax.servlet.ServletConfig | JSP 페이지에 대한 설명 정보를 저장하고 있는 객체 | 
| exception | java.lang.Throwable | JSP 페이지에서 예외가 발생한 경우 사용하는 객체 | 
request 내장객체
| 메소드 : 리턴 타입 | 설명 | 
| getProtocol() : String | 웹 서버로 요청시, 사용 중인 프로토콜을 리턴 | 
| getServerName() : String | 웹 서버로 요청시, 서버의 도메인 이름을 리턴 | 
| getMethod() : String | 웹 서버로 요청시, 요청에 사용된 요청 방식(Get, Post, put..)을 리턴 | 
| getQueryString() : String | 웹 서버로 요청시, 요청에 사용된 QueryString을 리턴 | 
| getRequestURI() : String | 웹 서버로 요청시, 요청에 사용된 URL로 부터 URI 값을 리턴 | 
| getRemoteHost() : String | 웹 서버로 정보를 요청한 웹 브라우저의 호스트 이름을 리턴 | 
| getRemoteAddr() : String | 웹 서버로 정보를 요청한 웹 브라우저의 IP 주소를 리턴 | 
| getServverPort() : int | 웹 서버로 요청시, 서버의 Port 번호를 리턴 | 
| getContextPath() : String | 해당 JSP 페이지가 속한 웹 애플리케이션 Context Path를 리턴 | 
| getHeader(name) : String | 웹 서버로 요청시, HTTP 요청 헤더(header) 헤더 이름 name에 해당하는 속성 값을 리턴 | 
| getHeaderNames() : Enumeration | 웹 서버로 요청시, HTTP 요청 헤더(header에 있는 모든 헤더 이름을 리턴 | 
response 내장 객체
| 메소드 | 설명 | 
| void setHeader(name, value) | 헤더 정보의 값을 수정하는 메소드, name에 해당하는 정보를 value 값으로 설정 | 
| void setContentType(type) | 웹 브라우저 요청의 결과로 보일 페이지의 ContentType을 설정 | 
| void sendRedirect(url) | 페이지를 이동시키는 메소드, url로 주어진 페이지로 제어가 이동 | 
out 내장 객체
| 메소드 | 설명 | 
| boolean isAutoFlush() | 출력 버퍼가 다 찼을 때 처리 여부를 결정, 자동인 경우 true, 아니면 false | 
| int getBufferSize() | 출력 버퍼의 전체 크기를 리턴 | 
| int getRemaining() | 현재 남아 있는 출력 버퍼의 크기를 리턴 | 
| void clearBuffer() | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움 | 
| String println(str) | 주어진 str 값을 웹 브라우저에 출력. 이때 줄바꿈은 적용되지 않음 | 
| void flush() | 현재 출력 버퍼에 저장되어있는 내용을 웹 브라우저에 전송하고 비움 | 
| void close() | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 출력 스트림을 닫음 | 
pageContext 내장 객체
| 메소드 : 리턴 타입 | 설명 | 
| getRequest() : ServletRequest | 페이지 요청 정보를 가지고 있는 request 내장 객체를 리턴 | 
| getResponse() : ServletResponse | 페이지 요청에 대한 응답 정보를 가지고 있는 response 내장 객체를 리턴 | 
| getOut() : JapWriter | 페이지 요청에 대한 출력 스트림인 out 내장 객체를 리턴 | 
| getSession() : HttpSession | 요청한 웹 브라우저의 세션 정보를 담고 있는 session 내장 객체를 리턴 | 
| getServletContext() : ServletContext | 페이지에 대한 서블릿 실행 환경 정보를 담고 있는 application 내장 객체를 리턴 | 
| getPage() : Object | page 내장 객체를 리턴 | 
| getServletConfig() : ServletConfig | 해당 페이지의 서블릿 초기 정보 설정을 담고 있는 config 내장 객체 생성 | 
| getException() : Exception | 실행 중에 발생하는 에러 페이지에 대한 예외 정보를 가진 exception 내장 객체 리턴 | 
session 내장 객체
| 메소드 : 리턴 타입 | 설명 | 
| getId() : String | 웹 브라우저에 대한 고유한 세션 ID를 리턴 | 
| getCreationTime() : long | 해당 세션이 생성된 시간을 리턴 | 
| getLastAccessedTime() : long | 웹 브라우저 요청이 시도된 마지막 접근 시간을 리턴 | 
| setMaxInactiveInterval(time) : void | 해당 세션을 유지할 시간을 초단위로 설정 | 
| getMaxInactiveInterval() : int | 기본 값은 30분으로 setMaxInactiveInterval(time)로 지정된 값을 리턴 | 
| isNew() : boolean | 현재 웹 브라우저가 새로 로딩된 세션의 경우 true 값을 리턴 | 
| invalidate() : void | 현재 정보의 유지로 설정된 세션의 속성 값을 모두 제거, 세션 무효화에 사용 | 
application 내장 객체
| 메소드 : 리턴 타입 | 설명 | 
| getServerInfo() : String | 웹 컨테이너의 이름과 버전을 리턴 | 
| getMimeType(fileName) : String | 지정한 파일의 MIME 타입을 리턴 | 
| RealPath(path) : String | 지정한 경로르레 웹 애플리케이션 시스템상의 경로로 변경하여 리턴 | 
| log(message) : void | 로그 파일에 message를 기록 | 
config 내장 객체
| 메소드 : 리턴 타입 | 설명 | 
| getInitParameterNames() : Enumeration | 모든 초기화 파라미터 이름을 리턴 | 
| getInitParameter(name) : String | 이름이 name인 초기화 파라미터 값을 리턴 | 
| getServletName() : String | 서블릿 이름을 리턴 | 
| getServletContext() : ServletContext | 실행하는 서블릿 ServletContext 객체를 리턴 | 
page 내장 객체
- JSP 그 자체를 나타내는 객체, this로 자기 자신 참조 가능
- 웹 컨테이너는 Java만을 스크립트 언어로 지원, 다른 언어를 허용하려면 page 객체를 참조할 수 있음
exception 내장 객체
- JSP 페이지에서 예외가 발생할 경우, 예외를 처리할 페이지에 전달되는 객체
- exception 객체는 page Directive에 isErrorPage 속성을 true로 지정한 JSP 페이지에서만 사용 가능
| 메소드 : 리턴 타입 | 설명 | 
| getMessage() : String | 발생한 예외의 메시지를 리턴 | 
| toString() : String | 발생한 예외 클래스명과 메시지를 리턴 | 
| printStackTrace() : String | 발생한 예외를 역추적하기 위해 표준 예외 스트림을 출력, 예외 발생할 곳을 찾을 때 사용 | 
3. 내장 객체(Implicit Object)의 영역(Scope)
- 웹 애플리케이션은 page, request, session, application이라는 4개의 영역을 가지고 있다. 기본 객체 영역은 객체의 유효기간이라고 부르며, 객체를 누구와 공유할 것인가를 나타낸다.
- page 영역은 웹 브라우저의 요청이 들어오면 이때 단 한 개의 페이지만 대응이 된다. 따라서 page 영역은 객체를 하나의 페이지 내에서만 공유한다.
- request 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응된다. 따라서 웹 브라우저의 한 번의 요청에 단지 한 개의 페이지만 요청될 수 이쏙, 때에 따라 같은 request 영역이면 두 개의 페이지가 같은 요청을 공유할 수 있다.
- session 영역은 하나의 웹 브라우저 당 1개의 session 객체가 생성된다. 즉, 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다.
- application 영역은 하나의 웹 애플리케이션 당 1개의 application 객체가 생성된다. 즉, 같은 웹 애플리케이션에 요청되는 페이지들은 같은 객체를 공유한다.
1. JSP 페이지 내에서 제공하는 9개의 내장 객체를 나열하고 그 객체가 하는 일을 간단히 기술하시오.
| 내장 | 객체 리턴 타입(Return Type) | 설명 | 
| request | javax.servlet.http.HttpServletRequest javax.servlet.ServletRequest | 웹 브라우저의 요청 정보를 저장하고 있는 객체 | 
| response | javax.servlet.http.HttpServletResponse javax.servlet.ServletResponse | 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 | 
| out | javax.servlet.jsp.JspWriter | JSP 페이지를 출력할 내용을 가지고 있는 출력 스트림 객체 | 
| session | javax.servlet.http.HttpSession | 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 저장 객체 | 
| application | javax.servlet.ServletContext | 웹 애플리케이션 Context의 정보를 저장하고 있는 객체 | 
| page Context | javax.servlet.jsp.PageContext | JSP에 대한 정보를 저장하고 있는 객체 | 
| page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 객체 | 
| config | javax.servlet.ServletConfig | JSP 페이지에 대한 설명 정보를 저장하고 있는 객체 | 
| exception | java.lang.Throwable | JSP 페이지에서 예외가 발생한 경우 사용하는 객체 | 
2. 속성 값을 저장하고 읽을 수 있는 메소드인 setAttribute() 메소드와 getAttribute 메소드를 제공하는 내장 객체는?
- request, session, application, pageContext
3. 다음은 학번 이름 전공을 입력해서 화면에 표시하는 프로그램이다. problem07_03_fom.jsp의 소스와 problem07_03Pro.jsp 페이지의 소스가 제공되어있다 이 소스들을 완성하고 실행하세요.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>07_03 입력</title> </head> <body>     <h2>정보를 입력하세요</h2>     <form method="post" action="problem07_03Pro.jsp">     학번 : <input type="text" name="stdNum"><br>     이름 : <input type="text" name="stdName"><br>     전공 : <select name="major">             <option value="0" selected>=선택하세요=</option>             <option value="컴퓨터공학">컴퓨터공학</option>             <option value="전자공학">전자공학</option>             <option value="기계공학">기계공학</option>     </select><br>     <input type="submit" value="입력완료">     </form> </body> </html> | cs | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>07_03정보</title> </head> <body>     <h2>입력한 정보</h2>     <%request.setCharacterEncoding("UTF-8"); %>     <%         String stdNum = request.getParameter("stdNum");         String stdName = request.getParameter("stdName");         String major = request.getParameter("major");     %>     학번 : <%=stdNum %> <br>     이름 : <%=stdName %> <br>     전공 : <%=major %> <br> </body> </html> | cs | 

4. 다음에서 설명하는 객체의 영역을 기술하세요.
| 하나의 웹 브라우저당 1개의 객체가 생성된다. 따라서 같은 웹 브라우저 내에서 요청하는 페이지들은 같은 객체를 공유하게 된다. | 
세션
'Web Study > JSP' 카테고리의 다른 글
| 09. JSP Page Error (0) | 2022.03.20 | 
|---|---|
| 08. JSP Page Action Tag (0) | 2022.03.19 | 
| 06. JSP Page Operator, Control Flow, UTF-8 (0) | 2022.03.16 | 
| 05. JSP Page Script (0) | 2022.03.16 | 
| 04. JSP Page Directive (0) | 2022.03.15 | 
 
           
                   
                  