JSP

내장 객체 (javax.servlet 패키지 / java.lang 패키지)

태로미 2023. 2. 22. 16:28

 

 

 

 

 

 

▶▶   내장 객체 (Implicit Object)

–  JSP페이지는 웹 컨테이너에 의해 서블릿 클래스로 변환되어 사용자의 요청을 수행함.

–  서블릿 클래스는 인스턴스로 생성되고,  서블릿이 실행되는 데 필요한 설정 정보를 다루는 객체와
    사용자의 요청과 응답에 관련된 객체와  JSP페이지의 입출력을 다루는 객체 등 웹 컨테이너에 의해 자동적으로 구현됨.
–  웹 컨테이너가 제공하는 고정된 이름의 객체를 JSP 내장객체(Implicit Object)라고 부르며,
    JSP를 지원하는 웹 컨테이너에서는 서블릿을 구현하는데 공통적으로 요구되는 javax.servlet 패키지(8개의 객체)
    예외처리를 위한 java.lang 패키지(1개의 객체) 제공함.
–  JSP 스펙으로 규정된 내장 객체들로 JSP페이지내에서 특별한 선언 없이 사용할 수 있음.

 

 

 

 

 

 

 

 

 

 

▶   javax.servlet 패키지   — 8개

내장 객체 변수명 클래스 / 인터페이스 타입 설명
request   javax.servlet.
  SevletRequest(java.servlet.
  http.HttpServletRequest)
   클라이언트의 HTTP 요청 정보를 저장한 객체
   (HTTP 헤더 정보, 파라미터 등)
response   javax.servlet.
  ServletResponse(javax.servlet.    http.HttpServletResponse)
   HTTP 요청에 대한 응답 정보를 저장한 객체
session   javax.servlet.http.HttpSession    클라이언트의 세션 정보를 저장한 객체
pageContext   javax.servlet.jsp.PageContext    페이지 실행에 필요한 컨텍스트 정보를 저장한 객체
out   javax.servlet.jsp.JspWriter    응답 페이지 전송을 위한 출력 스트림 객체
application   javax.servlet.ServletContext    동일한 애플리케이션의 컨텍스트 정보를 저장한 객체
config   javax.servlet.ServletConfig    해당 페이지의 서블릿 설정 정보(초기화 정보)를 저장한 객체
page   java.lang.Object(javax.servlet.jsp.
  HttpJspPage)
   해당 페이지의 서블릿 객체(인스턴스)

 

 

 

 

 

 

 

▸   request  객체

–  사용자가 서버에 웹브라우저를 통해 페이지를 요청할 경우,
    브라우저는 사용자 요청과 관련된 일련의 데이터들을 HTTP메시지로 구성해 서버에 전송함.
–  이러한 HTTP메시지는 HTTP헤더와 HTTP본문으로 구성되며,
    웹 서버는 HTTP메시지를 수신하여 정보를 분석하고 서블릿/JSP요청으로 판명될 경우,  웹 컨테이너에 처리를 넘김.
–  컨테이너는 전송받은 HTTP메시지를 통해 HttpServletRequest객체를 생성,
    이를 서블릿 인스턴스에 넘겨줌으로써 서블릿이 사용자의 요청에 관련된 데이터들을 얻게 됨.

    즉,  클라이언트의 HTTP 요청 정보를 저장하는 객체.
–  JSP페이지에서는 이 HttpServletRequest객체를 request란 이름의 객체로 사용함.


EX   )   

<body>

      서버 도메인명      : <%=request.getServerName() %> <br>		<!--시작하는 주소 이름-->
	  URL		 : <%=request.getRequestURL() %> <br>		<!--사이트 주소-->
	  URI 	  	 : <%=request.getRequestURI() %> <br>		<!--위치만 불러옴-->		   
	전송방식 	 : <%=request.getMethod() %> <br>		<!--get 방식인지 poost방식인지-->
	물리적경로 	 : <%=request.getRealPath("/") %> <br>	 	<!--java파일이 있는 곳의 경로-->
http헤더정보(user-agent) : <%=request.getHeader("user-agent") %> <br>	<!--사용자 정보 확인 가능-->

</body>

→   원래는 객체를 사용할 때,  Request request = new Request(); 이렇게 선언해줘야 하지만 내장 객체이므로 선언 불필요

→   'request객체의 getServerName() 메서드' == request.getServerName() 으로 해석할 수 있음.

   실행 결과

더보기

서버 도메인명 : localhost
URL : http://localhost:8088/JSP7/jsp1/test2.jsp
URI : /JSP7/jsp1/test2.jsp
전송방식 : GET
물리적경로 : C:\workspace_jsp7\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\JSP7\
http해더정보(user-agent) : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)

 

 

 

 

 

▸   response  객체

–  클라이언트의 요청에 대한 결과를 HTTP응답 정보로 저장한 객체. 

–  웹 컨테이너에서는 javax.servlet.http.HttpServletResponse 인터페이스를 사용해 response객체를 생성함.

–  JSP페이지에서는 response 객체를 통해 클라이언트로 전송될 HTTP응답 헤더 정보를 설정하거나,

   쿠키를 추가하고 페이지를 리다이렉트하는 등의 기능을 사용할 수 있음.


EX1   )   MINE 타입

<%	
 	response.setContentType("video/mp4");
%>

→    MINE타입으로 실행하면 그냥 형태만 보임.  이 페이지는 텍스트 타입이므로 그림이나 비디오로 볼 수 없음.

   실행 결과

 

 

 

EX2   )   페이지 이동과 새로고침

<%	
 	response.sendRedirect("https://www.naver.com");
 	response.addHeader("Refresh", "3");	
 	response.addHeader("Refresh", "5;url=http://www.itwillbs.co.kr");
%>

→   리다이렉트는 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 응답하는 기능,

      특정 페이지를 실행한 후 지정한 페이지로 이동하길 원할 때 리다이렉트 기능을 사용함.

→   Refresh는 새로고침 기능이며  뒤에 숫자를 입력할 경우,  3초에 한번씩 새로고침함.

→   숫자 뒤에 세미콜론을 넣고 url을 적어주면,  5초 뒤에 해당 사이트로 이동함.

 

 

 

 

 

▸   pageContext  객체

–  javax.servlet.jsp.PageContext 클래스를 상속하여 웹 컨테이너가 구현한 객체.

–  JSP페이지와 관련된 프로그램에서 다른 내장 객체를 얻어내거나,

   현재 페이지의 요청과 응답의 제어권을 다른 페이지로 넘겨주는데 사용함.

    즉,  페이지 실행에 필요한 프로젝트 정보를 저장하는 객체.

–  request, session, application처럼 내장 객체의 속성을 제어하는 기능이 있으며,

    이 4가지의 영역 내장 객체는 각각의 영역(scope)과 관련된 자신의 속성(attribute)을 가질 수 있고,

    이를 통해 각각의 영역별로 속성 데이터를 공유할 수 있음.

    →  예를 들어 session객체의 속성으로 지정된 객체는,

         세션이 유지되는 한 서로 다른 JSP페이지라 할지라도 공유해서 사용하는 것이 가능.

 

 

 

 

 

▸   session  객체

–   HTTP 프로토콜은 요청 / 응답의 구조로 되어 있어 응답을 전송하고 나면 연결이 끊어지게 됨.

     따라서 클라이언트의 정보가 유지되어야 할 필요가 있는 경우를 위해 가상 연결이라는 개념의 세션이 등장하였고

     JSP에서는 이러한 세션을 session 내장 객체를 이용하여 구현함.

–   즉,  클라이언트의 세션 정보를 저장한 객체.


EX   )

세션 생성시간   	  : <%=session.getCreationTime() %> <br>
세션 최종접속시간  : <%=session.getLastAccessedTime() %> <br>

→   새로고침하면 세션 최종접속시간은 계속 바뀜.  말 그대로 사용자가 마지막으로 들어온 시간을 의미하기 때문.

→  세션 최종접속시간 - 세션 생성시간 = 해당 사이트에 머무르는 시간 
     이를 이용해서 10초정도 후에는 페이지 이동을 하는 기능을 넣을 수도 있음.

   실행 결과

더보기

세션 생성시간 : 1677158362237
세션 최종접속시간 : 1677159288048

 

 

 

 

 

▸   application  객체

–  application객체는 javax.servlet.ServletContext 클래스를 상속받아 웹 컨테이너가 구현하여 제공하는 객체.

–  해당 웹 애플리케이션의 실행 환경을 제공하는 서버의 정보와 서버측 자원에 대한 정보를 얻어내거나

    해당 애플리케이션의 이벤트 로그를 다루는 메소드를 제공함.

–  각 웹 애플리케이션당 오직 하나의 객체만이 생성되므로,

    해당 웹 애플리케이션 전체 영역에서 자원을 공유해야 할 때 (방문자 수 등의 통계를 다룰 때) 주로 사용됨.

–  즉,  프로젝트의 정보를 저장한 객체

 

 

 

 

 

▸   out  객체

–  서블릿/JSP 컨테이너가 응답 페이지를 만들기 위해 사용하는 출력 스트림 객체.

–  java.io.Writer 클래스를 상속한 java.servlet.jsp.JspWriter 클래스 타입으로 생성됨.

–  JSP 기능의 핵심은 사용자의 요구에 맞는 응답 페이지를 만들어 내는 것이므로,

    이 응답 페이지를 만드는데 직접적으로 사용되는 out객체는 가장 중요하고 빈번하게 사용되는 객체.

–  하지만 우리는 out객체를 사용하지 않고,

    표현식을 이용하여 자바 코드의 변수와 메소드의 리턴값들을 충분히 출력할 수 있으므로 잘 사용하지 않음.

 

 

 

 

 

▸   config  객체

–  JSP페이지가 서블릿 클래스로 변환되어 서블릿 인스턴스가 생성될 때,

    참조해야 할 초기 설정 정보들을 저장해 놓은 객체.

–  초기 설정 정보들은 웹 컨테이너가 구동될 때 내부에서 자체적으로 생성/관리되며,

    서블릿당 1개만의 객체가 생성되어 같은 서블릿 인스턴스는 동일한 config객체를 참조함.

 

 

 

 

 

▸   page  객체

–  JSP페이지에 의해 생성되는 서블릿 인스턴스 자체를 나타내는 객체.

–  사용빈도가 낮음

 

 

 

 

 

 

 

 

 

 

 

▶   java.lang 패키지   — 1개

 

 

 

▸   exception 

–  JSP페이지에서 예외가 발생하였을 경우

    그 예외를 처리할 에러 페이지를 사용자가 지정했다면,  해당 에러 페이지에 전달되는 예외 객체.

–  exception객체를 사용하기 위해서는 해당 페이지가 에러 페이지로 지정되어 있어야만 함.

    즉,  page지시어에 의해 isErrorPage속성이 true로 지정되어 있어야만 사용 가능.

–  java.lang.Throwable 클래스로 선언됨.

 

 

 

 

 

 

 

 

 

 


🐾 참조 도서 및 사이트 🐾

 

—   JSP 2.3 & Servlet 3.1