본문 바로가기
language/JSP

JSP 내장 객체(Implied Object)

by 스파이디웹 2020. 11. 13.
728x90

-내장 객체는 JSP에서 제공하는것으로, 객체의 레퍼런스를 사용해 객체의 프로퍼티(멤버 필드,전역 변수)와 메소드에 접근한다.

 

-레퍼런스 타입의 변수를 선언과 객체 생성 없이 사용할 수 있는데, 이것은 JSP페이지가 서블릿으로 변환될 때 JSP 컨테이너가 자동으로 제공하기 때문이다.

 

-객체는 멤버 변수와 메소드로 이루어져있는데, 이들을 사용하려면 먼저 객체를 생성하고 레퍼런스 변수를 통해서 객체에 접근한다.

ex) Timestamp now = new Timestamp(System.currentTimemillis());은 Timestamp 클래스 타입의 객체를 생성하고,

그 객체가 위치한 곳의 위치 정보는 레퍼런스 변수인 now가 가지게 된다.

향후 이 객체에 접근하려면 now.을 사용한다.(now.toString();과 같이 기술)

 

-JSP에서 제공하는 내장 객체

메소드(Method): 리턴 타입(Return type) 설명(Description)
setAttribute(String key, Object value) : void 해당 내장 객체의 속성(attribute)값을 설정하는 메소드로, 속성명에 해당하는 key 매개 변수에 속성값에 해당하는 value 매개 변수의 값을 지정한다. (중요하다)★
getAttributeNames() : java.util.Enumeration 해당 내장 객체의 속성명을 읽어오는 메소드로, 모든 속성의 이름을 얻어낸다.
getAttribute(String key) : Object 해당 내장 객체의 속성명을 읽어오는 메소드로, 주어진 key 매개 변수에 해당하는 속성값을 얻어낸다.
removeAttribute(String key) : void 해당 내장 객체의 속성을 제거하는 메소드로, 주어진 key 매개 변수에 해당하는 속성명을 제거한다.

-내장 객체의 종류

 

1.request 객체

-request 객체는 웹 브라우저에서 JSP 페이지로 전달되는 정보의 모임으로, HTTP 헤더와 HTTP 바디로 구성되어 있다.

 

-웹 컨테이너는 요청된 HTTP 메시지를 통해 HttpServletRequest 객체를 얻어내고, 이 객체로부터 사용자의 요구 사항을 얻어낸다.

 

-JSP페이지에서는 HttpServletRequest 객체를 request 객체명으로 사용한다.

 

1) request 객체에서 사용자의 요구 사항을 얻어내는 요청 메소드

 

-request 객체는 사용자가 입력 폼에 입력한 사용자의 요구 사항을 얻어낼 수 있도록 요청 메소드를 제공한다.

메소드 설명
String getParameter(name) 파라미터 변수 name에 저장된 변수값을 얻어내는 메소드이며, 해당하는 변수명이 없으면 null 값을 리턴한다. 단독값을 입력하는 text, select, radio 등에서 사용된다.
String[] getParameterValues(name) 파라미터 변수 name에 저장된 모든 변수값을 얻어내는 메소드이며, 변수값은 String 배열로 리턴된다. 다중값을 입력하는 checkbox에서 선택한 값을 얻어낼 때 주로 사용된다.
Enumeration getParameterNames() 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴한다. 변수가 가진 객체들을 저장해야 하기 때문에 컬렉션인 Enumeration 타입을 사용했다.

2)웹 브라우저와 웹 서버의 정보를 얻어내는 메소드

 

-request 객체는 요청된 파라미터의 값 외에도 웹 브라우저와 웹 서버의 정보도 가져올 수 있다.

 

-request 객체의 메소드들 중 웹 브라우저, 웹 서버 및 요청 헤더의 정보를 가져올 때 사용되는 메소드들

 

메소드 설명
String getProtocol() 웹 서버로 요청 시 사용 중인 프로토콜을 리턴한다.
String getServerName() 웹 서버로 요청 시 서버의 도메인 이름을 리턴한다.
String getMethod() 웹 서버로 요청 시 요청에 사용된 요청 방식(GET, POST, PUT 등)을 리턴한다.
String getQueryString() 웹 서버로 요청 시 요청에 사용된 QueryString을 리턴한다.
String getRequestURI() 웹 서버로 요청 시 요청에 사용된 URL로부터 URI값을 리턴한다.
String getRemoteHost() 웹 서버로 정보를 요청한 웹 브라우저의 호스트 이름을 리턴한다.
String getRemoteAddr() : String 웹 서버로 정보를 요청한 웹 브라우저의 IP 주소를 리턴한다.
String getServerPort() 웹 서버로 요청 시 서버의 Port번호를 리턴한다.
String getContextPath() : String 해당 JSP 페이지가 속한 웹 애플리케이션의 콘텍스트 경로를 리턴한다.
콘텍스트 경로는 웹 애플리케이션 루트 경로이다.
Ex) http://localhost:8080/studyjsp/ch04/requestTest1.jsp에서 getContextPath()메소드를 사용하면 웹 애플리케이션 루트 경로인 http://localhost:8080/studyjsp를 반환
String getHeader(name) 웹 서버로 요청 시 HTTP 요청 헤더(header) 이름인 name에 해당하는 속성값을 리턴한다.
Enumeration getHeaderNames() 웹 서버로 요청 시 HTTP 요청(header)에 있는 모든 헤더 이름을 리턴한다.

-URL(Uniform Resource Locator):

웹상에서 서비스를 제공하는 각 서버들이 제공하고 있는 파일들의 위치를 명시하기 위한 것으로, 접속해야 될 서비스의 종류, 도메인명, 파일의 위치가 포함된다.

 

-URI(Uniform Resource Identifier):

URL로부터 존재하는 자원을 식별하기 위한 일반적인 식별자를 규정하는 것으로, URL에서 HTTp 프로토콜, 호스트명, port 번호를 제외한 부분이 바로 URI

 

ex)http://127.0.0.1:8080/study/ch04/requestTest1.jsp

전체가 URL이고 밑줄친 굵은 부분이 URI이다.


2. response 내장 객체

-response 객체는 웹 브라우저로 응답할 응답 정보를 가지고 있다.

 

-웹 브라우저에 보내는 응답 정보는 HttpServletResponse 객체에 있으며, JSP에서는 response 객체를 사용해 접근한다.

 

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

 

1)response 객체에서 자주 사용되는 헤더 정보 입력과 리다이렉트에 관련된 메소드

메소드 설명
void setHeader(name, value) 헤더 정보의 값을 수정하는 메소드로, name에 해당하는 헤더 정보를 value 값으로 설정한다.
void setContentType(type) 웹 브라우저의 요청 결과로 보일 페이지의 contentType을 설정한다.
void sendRedirect(url) 페이지를 이동시키는 메소드로, url로 주어진 페이지로 제어가 이동한다.

3. out 내장 객체

-out 객체는 JSP 페이지가 생성한 결과를 웹 브라우저에 전송해 주는 출력 스트림으로, JSP 페이지가 웹 브라우저로 보내는 모든 정보는 out 객체를 통해서 전송된다.

 

-JSP 스크립트 요소뿐만 아니라, 비 스크립트 요소인 HTML과 일반 텍스트도 모두 포함된다.

 

-out 객체는 javax.servlet.jsp.JspWriter 클래스 타입으로 JSP에서는 out 객체로 사용된다.

 

-주로 많이 사용되는 메소드는 웹 브라우저에 출력할 때 사용되는 println()메소드이다.

 

-표현식(<%=문장%>)과 out.println()는 둘 다 브라우저에 출력시키는 똑같은 역할을 수행한다.

JSP 페이지가 서블릿으로 변환될 때, <%=문장%> 부분은 out.println(문장)으로 변환되어 실행된다.

스크립트릿(<%%>)안에서 어떠한 내용을 웹 브라우저에 출력하고 싶다면 그때는 out.println()을 사용해야 한다.

 

1) out 객체가 제공하는 메소드들 중 사용 빈도가 높은 것들

메소드 설명
boolean isAutoFlush() 출력 버퍼가 다 찼을 때 처리 여부를 결정하는 것으로, 자동으로 플러시(출력해서 비우기)할 경우에는 true를 리턴하고, 그렇지 않을 경우 false를 리턴한다.
int getBufferSize() 출력 버퍼의 전체 크기를 리턴한다.
int getRemaining() 현재 남아 있는 출력 버퍼의 크기를 리턴한다.
void clearBuffer() 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다.
String println(str) 주어진 str 값을 웹 브라우저에 출력한다. 이때 줄 바꿈은 적용되지 않는다.
void flush() 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다.
void close() 현재 출력 버펑 저장되어 있는 내용을 웹 브라우저에 전송하고 출력스트림을 닫는다.

4.pageContext 내장 객체

-pageContext 객체는 현재 JSP 페이지의 콘텍스트(Context)를 나타내며 주로 다른 내장 객체를 구하거나 페이지의 흐름을 제어할 때와 에러 데이터를 얻어낼 때 사용된다.

 

-javax.servlet.jsp.PageContext 객체 타입으로, JSP에서는 pageContext 객체로 사용된다.

ex) JspWriter outObject = pageContext.getOut();

 

1) 다른 내장 객체를 얻어내는 pageContext 내장 객체의 메소드

메소드 설명
ServletRequest getRequest() 페이지 요청 정보를 가지고 있는 request 내장 객체를 리턴한다.
ServletResponse getResponse() 페이지 요청에 대한 응답 정보를 가지고 있는 response 내장 객체를 리턴한다.
JspWriter getOut() 페이지 요청에 대한 출력 스트림인 out 내장 객체를 리턴한다.
HttpSession getSession() 요청한 웹 브라우저의 세션 정보를 담고 있는 session 내장 객체를 리턴한다.
ServletContext getServletContext() 페이지에 대한 서블릿 실행 환경 정보를 담고 있는 application 내장 객체를 리턴한다.
Object getPage() page 내장 객체를 리턴한다.
ServletConfig getServletConfig() 해당 페이지의 서블릿 초기 설정 정보를 담고 있는 config 내장 객체를 리턴한다.
Exception getException() 페이지 실행 중에 발생되는 에러 페이지에 대한 예외 정보를 갖고 있는 exception 내장 객체를 리턴한다.

5.session 내장 객체

-session 객체는 웹 브라우저의 요청 시, 요청한 웹 브라우저에 관한 정보를 저장하고 관리하는 내장 객체이다.

 

-javax.servlet.http.HttpSession 객체 타입으로, JSP에서는 session 객체로 사용된다.

 

-session 객체는 웹 브라우저(클라이언트)당 1개가 할당된다.(주로 회원 관리 시스템에서 사용자 인증에 관련된 작업을 수행할 때 사용)

 

1) 요청한 웹 브라우저의 정보를 유지하기 위해 사용되는 session 내장 객체의 메소드들

메소드 설명
 String getId() 해당 웹 브라우저에 대한 고유한 세션 ID를 리턴한다.
long getCreationTime() 해당 세션이 생성된 시간을 리턴한다.
long getLastAccessedTime() 웹 브라우저의 요청이 시도된 마지막 접근 시간을 리턴한다.
void setMaxInactiveInterval(time) 해당 세션을 유지할 시간을 초 단위로 설정한다.
int getMaxInactiveInterval() 기본값은 30분으로, setMaxInactiveInterval(time)으로 지정된 값을 리턴한다.
boolean isNew() 현재의 웹 브라우저가 새로 불려진, 즉 새로 생성된 세션의 경우 true값을 리턴한다.
void invalidate() 현재 정보의 유지로 설정된 세션의 속성값을 모두 제거한다. 주로 세션을 무효화시킬 때 사용한다.

6.application 내장 객체

-application 내장 객체는 웹 애플리케이션의 설정 정보를 갖는 context와 관련 있는 것, 웹 애플리케이션과 연관이 있다.

 

-웹 애플리케이션이 실행되는 서버의 설정 정보 및 자원에 대한 정보를 얻어내거나, 애플리케이션이 실행되고 있는 동안에 발생할 수 있는 이벤트 로그 정보와 관련된 기능들을 제공한다.

 

-application 기본 객체는 웹 애플리케이션당 1개가 생성되므로, 하나의 웹 애플리케이션에서 공유하는 변수로 사용된다.

(주로 웹 사이트의 방문자 기록을 카운트할 때 사용된다.)

 

-javax.servlet.ServletContext 객체 타입으로 제공하고 application 객체 형태로 사용한다.

 

1) 웹 애플리케이션의 설정 환경 및 자원에 대한 정보를 제공하는 application 객체 관련 메소드

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

7.config 내장 객체

-config 내장 객체는 javax.servlet.ServletConfig 객체 타입으로, ServletConfig 객체는 서블릿이 초기화되는 동안 참조해야 할 정보를 전달해 주는 역할을 한다.

 

-서블릿이 초기화 될 때 참조해야 하는 정보를 가지고 있다가 전달해준다.

 

-config 내장 객체는 컨테이너당 1개의 객체가 생성된다.(같은 컨테이너에서 서비스되는 모든 페이지는 같은 객체를 공유한다.

 

1) config 내장 객체가 제공하는 메소드

메소드 설명
Enumeration getInitParameterNames() 모든 초기화 파라미터 이름을 리턴한다.
String getInitParameter(name) 이름이 name인 초기화 파라미터의 값을 리턴한다.
String getServletName() 서블릿의 이름을 리턴한다.
ServletContext getServletContext 실행하는 서블릿 ServletContext 객체를 리턴한다.

8. page 내장 객체

-page 내장 객체는 JSP 페이지 그 자체를 나타내는 객체로, JSP 페이지 내에서 page 객체는 this 키워드로 자기 자신을 참조할 수 있다.

 

-javax.servlet.jspHttpJspPage 객체 타입으로 JSP 내장 객체이다.

ex) this.getServletInfo();//page 디렉티브의 info 속성에 접근

 

-현재 거의 사용하지 않는 내부 객체이다.


9. exception 내장 객체

-exception 내장 객체는 JSP 페이지에서 예외가 발생하였을 경우, 예외를 처리할 페이지에 전달되는 객체이다.

 

-page 디렉티브의 isErrorPage 속성을 true로 지정한 JSP 페이지에서만 사용 가능한 내장 객체로, java.lang.Throwabe 객체 타입이다.

 

1) exception 내장 객체에서 제공하는 메소드들

메소드 설명
String GetMessage() 발생된 예외의 메시지를 리턴한다.
String toString() 발생된 예외 클래스명과 메시지를 리턴한다.
String printStackTrace() 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다. 예외 발생 시 예외가 발생한 곳을 알아낼 때 주로 사용된다.

-내장 객체의 4가지 영역

 

1)page 영역

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

 

-웹 브라우저의 요청이 들어오면 단 한 개의 페이지만 대응된다.따라서 page 영역은 객체를 하나의 페이지 내에서만 공유한다.

 

-pageContext 내장 객체를 사용

 

2)request 영역

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

 

-때에 따라 같은 request  영역이면 두 개의 페이지가 같은 욫어을 공유할 수 있다는 의미이다.

 

-request 영역은 객체를 하나 또는 두 개의 페이지 내에서 공유할 수 있다.

 

-include 액션 태그, forward 액션 태그를 사용하면 request 내장 객체를 공유하게 되어서 같은 request영역이 된다.

 

-주로 페이지 모듈화에 사용되며, request 내장 객체를 사용한다.

 

3)session 영역

-session 영역은 하나의 웹 브라우저당 1개의 session 객체가 생성된다. 

 

-같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 된다.

 

-주로 회원 관리의 회원 인증에 사용되며, session 내장 객체를 사용한다.

 

4)application 영역

-application 영역은 하나의 웹 애플리케이션당 1개의 appliction 객체가 생성된다.

 

-웹 애플리케이션에 요청되는 페이지들은 같은 객체를 공유한다.

 

-application 내장 객체를 사용한다.

 

728x90

댓글