|
http://ikeyword.tistory.com/39
Chapter05 내장 객체와 액션 태그
5.1 내장 객체
1) 내장 객체의 개요
Lmplicit object for scriptlets |
type |
Scop |
Request |
Subclass of javax.servlet.servletRequest |
Request |
Response |
Subclass of Javax.servlet.servletResponse |
Page |
pageContext |
Javax.servlet.jsp.pagecontext |
Page |
Session |
Javax.servlet.http.httpsession |
Session |
Applicaton |
Javax.servlet.servletcontext |
Application |
Out |
Javax.servlet.jsp.jspwriter |
Page |
Config |
Javax.servlet.servletconfig |
Page |
Page |
Java.lang.object |
Page |
exception |
Javs.lang.throwable |
Page |
*사용자는 이들 내장 객체가 사용하는 이름과 같은 이름을 가진 변수를 jsp페이지 내의 스크립틀릿 안에서 정의해 사용해서는 안된다. 왜냐하면 이들 내장 객체는 jsp페이지가 서블릿 클래스로 변환될 때 _jspService()메소드 안에서 가장 먼저 선언되기 때문에 사용자가 jsp페이지의 스크립틀릿 안에서 내장 객체의 이름을 가진 변수를 정의하면 스크립틀릿 내의 코드가 _jspService()메소드 안에 구현될 때 중복된 이름으로 정의되어 컴파일 에러가 발생한다.
l Request 객체
jsp/서블릿 컨테이너는 전송 받은 http메시지를 통해 httpservletrequest객체를 생성하고 이를 서블릿 인스턴스에 넘겨줌으로써 서블릿이 사용자의 요청에 관련된 데이터들을 얻게 된다. jsp페이지에서는 이 httpservletrequest객체를 request란 이름의 객체로 사용한다.
l Response 객체
클라이언트의 요청에 대한 http응답을 나타내는 객체로 웹 컨테이너에서는 javax.servlet.http.HttpServletResponse 객체를 사용해 response객체를 생성한다.
l pageContext 객체
javax.serVlet.jsp.PageContext 클래스를 상속하여 웹 컨테이너가 구현한 객체로 jsp페이지와 관련돤 프로그램에서 다른 내장 객체를 얻어내거나 현재 페이지의 요청과 응답이 제어권을 다른 페이지로 넘겨주는데 사용한다.
또 다른 기능으로는 request, session, application과 같은 내장 객체의 속성을 제어하는 기능이 있다.
pageContext, request, session, application의 4가지 내장 객체는 각각의 영역(Scope)과 관련된 자신의 속성을 가질 수 있고 이를 통해 각각의 영역 내에서 지정된 속성들을 서로 다른 페이지라 할지라도 동일한 어플리케이션 내에서 공유할 수 있다.
l Session 객체
클라이언트의 정보가 유지되어야 할 필요가 있는 경우를 위해 가살연결(Virtual Connection)이라는 개념의 세션이 등장했고 jsp는 이러한 세션을 session내장 객체를 이용해 구현한다.
l Application 객체
Javax.servlet.ServletContext 클래스를 상속받아 웹 컨테이너가 구현하여 재공하는 객체로 해답 웹 애플리케이션의 실행 환경을 제공하는 서버의 정보와 서버 측 자원에 대한 정보를 얻어내거나 해당 어플리케이션의 이벤트 로그를 다루는 메소드들을 제공한다.
Application은 각 웹 어플리케이션 당 오직 하나만의 객체만이 생성되므로 해당 웹 애플리케이션 전체 영역에서 자원을 공유해야 할 때 주로 사용.
l Out 객체
서블릿/jsp 컨테이너가 응답 페이지를 만들기 위해 사용하는 출력 스트림 객체로 java.io.Writer클래스를 상속한 javax.servlet.jsp.JspWriter클래스 타입으로 선언된다.
l Config 객체
Jsp 페이지가 서블릿 클래스로 변환되어 서블릿 인스턴스가 생성될 때 참조해야 할 초기 설정 정보들을 저장해 놓은 객체이다.
l Page 객체
Jsp 페이지에 의해 생성되는 서블릿 인스턴스 자체를 나타내는 객체이다.
This는 자바코드에서 자기자신을 참조하는 레퍼런스이므로 page객체는 서블릿 인스턴스 자체를 참조하는 객체임을 알 수 있다.
l Exception 객체
jsp페이지에서 예외가 발생했을 경우 그 예외를 처리할 에러 페이지를 사용자가 지정한 경우에 해당 에러 페이지에 전달되는 예외 객체이다.
*포워딩 방식 : 요청과 응답에 대한 제어권을 다른 페이지로 넘기더라도 브라우저에 표시되는 주소가 유지되는 방식
5.2 영역 객체와 속성
1) 영역(Scope)과 속성(Attribute)
- jsp에서 제공하는 내장 객체들 중 session , request , application 객체들은 해당 객체에 정의된 유효범위 안에서 필요한 객체(데이터)들을 저장하고 읽어 들임으로써 서로 공유할 수 있는 특저안 영역을 가지고 있다.
속성(Attribute) : 공유되는 데이터
영역(Scope) : 속성을 공유할 수 있는 유효범위
- 속성의 유효범위
Page : 해당 페이지가 클라이언트에 서비스를 제공하는 동안 유효
Request : 클라이언트의 요청이 처리되는 동안 유효
Session : 세션이 유지되는 동안 유효
Application : 웹 애플리케이션이 실행되고 있는동안 유효
*page영역은 오직 하나의 페이지 내에서만 유효성을 갖는 영역.
page내장 객체가 아닌 pageContext 내장 객체를 통해 접근할 수 있는 영역이다.
5.3 액션태그
1) 액션태그의 개요
- jsp페이지에서 자바 코드 등의 스크리브 언어를 사용하지 않고도 (html 태그 형태로)
다른 페이지의 서블릿이나 자바빈의 객체에 접근할 수 있도록 태그를 이용해 구현된 기능
- 페이지 흐름 제어 액션(forward / include 액션)
- 자바빈 사용 액션(useBean 액션)
- 애플릿 사용 액션(plugin 액션)
2) forward 액션
- <jsp:forward page = ”이동할 페이지” />
<jsp:forward page = “이동할 페이지”></jsp/forward>
- 현재 페이지의 요청과 응답에 관한 처리권을 page 속성에 지정된 이동할 페이지로 영구적으로 넘기는 일을 한다.
- 제어권을 포워딩 되는 페이지로 완전히 넘기고 그 페이지의 처리가 끝나면 모든 응답을 종료시키는 방식
3) include 액션 태그
- <jsp:include page = ”포함될 페이지” flush = “false” />
<jsp: include page = “포함될 페이지” flush = “false”></jsp/ include >
- 임시로 제어권을 include되는 페이지로 넘겼다가 그 페이지의 처리가 끝나면 처리 결과를
원래 페이지로 리턴하고 다시 원래의 페이지로 제어권을 반환하는 방식
- Include 소스코드 복사(include 지시어)가 아닌 제어권 자체가 include 액션으로 지정된 페이지로 넘어갔다가 다시 원래 페이지로 돌아온다.
*include 지시어는 일반적으로 정적인 페이지(저작권 표시 등..)를 포함시킬 때 주로 사용하고
Include 액션은 jsp 페이지 처럼 동적인 페이지를 포함 시키고자 할 때 주로 사용
4) plugin 액션
- <jsp:plugin type = “플러그인 타입”
Codebase=”클래스 파일의 위치” code=”불러올 클래스 파일”
Width=”가로” height=”세로”>
<jsp:params>
<jsp:param name=”파라미터 이름” value=”파라미터 값”/>
</jsp:params>
</jsp:plugin>
'공부해요 > JSP' 카테고리의 다른 글
[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 2 (0) | 2014.07.29 |
---|---|
[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 3 (0) | 2014.07.29 |
[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 4 (0) | 2014.07.29 |
[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 7 (0) | 2014.07.29 |
[ 모델2로 구현하는 자바 웹 프로그래밍 JSP2.2 & Servlet3.0 따라하기 ] 8 (0) | 2014.07.29 |