본문 바로가기
Programming/Jsp

[JSP] 내장객체(Implicit Object)와 영역(Scope)

by prinha 2020. 7. 21.
반응형

 

JSP 내장객체 (Implicit Object)란?

웹 컨테이너가 객체 생성 없이 바로 사용할 수 있게 제공하는 객체

 


1. request 객체 - javax.servlet.http.HttpServletRequest

 - 웹 브라우저의 요청 정보를 저장하고 있는 객체

 - 입력폼에 입력한 사용자의 요구사항을 얻어낼 수 있는 요청 메소드 제공

 

입력폼에 입력한 사용자의 요구사항을 얻어내는 요청 메소드
String getParameter(name) 파라미터 변수 name에 저장된 변수 값을 얻어내는 메소드
String[] getParameterValues(name) 파라미터 변수 name에 저장된 모든 변수 값을 얻어내는 메소드
Enumeration getParameterNames() 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴

 

- 요청된 파라미터의 값 외에도 웹 브라우저와 웹 서버의 정보를 가져올 수 있음

웹 브라우저, 웹 서버 및 요청 헤더의 정보를 가져올 때 사용되는 메소드
String getProtocol() 웹 서버로 요청 시, 사용중인 프로토콜 리턴
String getServerName() 웹 서버로 요청 시, 서버의 도메인 이름 리턴
웹 서버-사용자의 요구사항을 얻어내는 요청 메소드
String getMethod() 웹 서버로 요청시, 요청에 사용된 요청 방식(GET/POST/PUT 등)을 리턴
String getQueryString() 웹 서버로 요청시, 요청에 사용된 QueryString을 리턴
String getRequestURI() 웹 서버로 요청시, 요청에 사용된 URL로부터 URI값을 리턴
String getRemoteHost() 웹 서버로 정보를 요청한 웹 브라우저의 호스트 네임을 리턴
String getRemoteAddr() 웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴
String getServerPort() 서버의 Port 번호를 리턴

String getContextPath() 해당 JSP페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 리턴
String getHeader(name) HTTP 요청 헤더(header)의 헤더이름(name)에 해당하는 속성 값을 리턴
Enumeration getHeaderNames() 웹 서버로 요청시, HTTP 요청 헤더(header)에 있는 모든 헤더네임을 리턴

 


 

2. response 객체 - javax.servlet.http.HttpServletResponse

 - 웹 브라우저의 요청에 대한 응답 정보를 저장하고있는 객체

 - 응답 정보와 관련하여 주로 헤더 정보 입력, 리다이렉트 등의 기능 제공

 

reponse 객체의 메소드
void setHeader(name, value) header 정보의 값을 수정
void setContentType(type) 웹 브라우저의 요청 결과를 보일 페이지의 contentType을 설정
void sendRedirect(url) 페이지 이동-리다이렉트

 


 

3. out 객체 - javax.servlet.jsp.JspWriter

 - JSP페이지의 출력할 내용을 가지고 있는 출력 스트림 객체

 - 표현식과 같음 <%=문장%>

out 객체의 메소드
boolean isAutoFlush() 출력 버퍼가 다 찼을 때 처리여부를 결정
int getBufferSize() 전체 출력 버퍼의 크기를 리턴
int getRemaining() 현재 남아있는 출력 버퍼의 크기를 리턴
void clearBuffer() 출력 버퍼에 저장되어있는 내용을 비움
String println(str) 주어진 내용을 출력,  이때 줄 바꿈 적용X
void flush() 출력 버퍼의 내용을 웹 브라우저에 전송하고 비움
void close() 출력 버퍼의 내용을 웹 브라우저에 전송하고 출력 스트림을 닫음

 


 

4. pageContext 객체 - javax.servlet.jsp.PageContext

 - JSP페이지에 대한 정보를 저장하고 있는 객체

 - 다른 내장 객체를 구하거나, 페이지의 흐름 제어, 에러데이터를 얻어낼 때 사용

pageContext 객체의 메소드
ServletRequest getRequest() request 객체를 얻어냄
ServletResponse getResponse() reponse 객체를 얻어냄
JspWriter getOut() out 객체를 얻어냄
HttpSession getSession() session 객체를 얻어냄
ServletContext getServletContext() application 객체를 얻어냄
Object getPage() page 객체를 얻어냄
ServletConfig getServletConfig() config 객체를 얻어냄
Exception getException() exception 객체를 얻어냄

 


 

5. session 객체 - javax.servlet.http.HttpSession

 - 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체

 - 웹 브라우저(클라이언트)당 1개만 할당됨 -> 주로 회원관리 시스템에서 사용자 인증에 관련된 작업 수행

session 객체의 메소드
String getId() 해당 웹 브라우저에 대한 고유한 세션 ID를 리턴
long getCreation Time() 해당 세션이 생성된 시간을 리턴
long getLastAccessedTime() 마지막 접근 시간을 리턴
void setMaxInactiveInterval(time) 세션 유지 시간을 지정
int getMaxInactiveInterval() 기본 값은 30분으로 세션 유지 시간을 리턴
boolean isNew() 새로 생성된 세션의 경우 true 값을 리턴
void invalidate() 세션 무효화

 


 

6. application 객체 - javax.servlet.ServletContext

 - 웹 어플리케이션 Context의 정보를 저장하고 있는 객체

 - 서버의 설정 정보, 자원에 대한 정보, 어플리케이션이 실행되는 동안에 발생할 수 있는 이벤트 로그 정보 등을 제공

 - 웹 어플리케이션당 1개의 객체가 생성 -> 주로 방문자 카운트와 같은 하나의 웹 어플리케이션에서 공유하는 변수에 사용

application 객체의 메소드
String getServerInfo() 웹 컨테이너의 이름과 버전을 리턴
String getMimeType(fileName) 지정한 파일의 MIME 타입을 리턴
String getRealPath(path) 지정한 경로를 웹 어플리케이션 시스템상의 경로로 변경하여 리턴
void log(message) 로그 파일에 message를 기록

 


 

7. config 객체 - javax.servlet.ServletConfig

 - JSP페이지에 대한 설정 정보를 저장하고 있는 객체

 - 서블릿이 초기화되는 동안 참조해야할 정보를 전달

 - 컨테이너당 1개의 객체가 생성

config 객체의 메소드
Enumeration getInitParameterNames() 모든 초기화 파라미터 이름을 리턴
String getInitParameter(name) 이름이 name인 초기화 파라미터의 값을 리턴
String getServletName() 서블릿의 이름을 리턴
ServletContext getServletContext() 서블릿 ServletContext 객체를 리턴

 


 

8. exception 객체 - java.lang.Throwable

 - JSP페이지에서 예외가 발생한 경우에 사용되는 객체

exception 객체의 메소드
String getMessage() 발생된 예외의 메세지를 리턴
String toString() 발생된 예외 클래스명과 메세지를 리턴
String printStackTrace() 예외발생시 예외가 발생한 곳을 추적함

 


 

9. page 객체 - java.lang.Object page

 - JSP페이지를 구현한 자바 클래스 객체

 - 웹 컨테이너는 자바만을 스크립트 언어로 지원하기때문에 page객체는 현재 거의 사용되지않음

 


 

내장객체의 영역(Scope) : 객체의 유효기간

웹 어플리케이션은 4개의 영역을 가지는데, 객체를 누구와 공유할 것인가를 나타낸다.

 

1. page 영역

  - 한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP페이지가 호출

  - 웹 브라우저의 요청이 들어오면 이때 단 한개의 페이지만 대응이 된다.

  - 따라서 page 영역은 하나의 페이지 내에서만 객체 공유가 가능하다.

  - page영역은 pageContext 객체를 사용한다.

 

2. request 영역

  - 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응

  - 웹 브라우저의 한 번의 요청에 한 개의 페이지만 요청될 수 있고, 같은 request 영역이면 두 개의 페이지가 같은 요청을 공유할 수 있음

  - 같은 request영역 -> include 액션 태그, forward 액션 태그를 사용하면 request 객체를 공유하게 됨

  - 주로 페이지 모듈화에 사용됨

 

3. session 영역

  - 하나의 웹 브라우저당 1개의 session객체가 생성

  - 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유함 -> 주로 회원관리 회원인증에서 사용

 

4. application 영역

  - 하나의 웹 어플리케이션당 1개의 application객체가 생성

  - 같은 웹 어플리케이션에 요청되는 페이지들은 같은 객체를 공유함

 

 

 

 

[JSP] 내장(기본) 객체의 속성(Attribute)

[JSP] 내장객체(Implicit Object)와 영역(Scope) JSP 내장객체 (Implicit Object)란? 웹 컨테이너가 객체 생성 없이 바로 사용할 수 있게 제공하는 객체 1. request 객체 - javax.servlet.http.HttpServletRequest..

prinha.tistory.com

 

반응형