-내장 객체는 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 내장 객체를 사용한다.
'language > JSP' 카테고리의 다른 글
Ajax+JQuery (0) | 2020.11.15 |
---|---|
액션 태그(Action tag) (0) | 2020.11.14 |
JSP(Java Server Pages) vs Servlet(Server+ applet) (0) | 2020.08.07 |
Model1 vs Model2 vs MVC(Model View Controller) 패턴(pattern) (0) | 2020.08.07 |
javabeans 와 EJB(Enterprise Java Bean)의 차이점 (0) | 2020.06.09 |
댓글