본문 바로가기

개발/Java

[JAVA - WEB] JSP 내장 객체(내장 요소)

728x90
반응형
내장 객체

 

JSP 페이지의 내장 객체란 JSP 가 서블릿으로 변환될 때 컨테이너가 자동으로 생성시키는 서블릿 멤버변수를 말합니다. 
즉 서블릿으로 구현 시 자주 사용했던 객체를 서블릿으로 변환 시 컨테이너가 자동으로 생성하여 사용할 수 있게 제공하는 것입니다.( 내장.. 내부에 저장된.. 머 그런거겠죠..? )

 

JSP 내장 객체들

 

내장 객체 서블릿 타입 기능
request javax.servlet.http.HttpServletRequest 클라이언트 요청 정보를 저장
response javax.servlet.http.HttpServletResponse 응답 정보를 저장
out javax.servlet.jsp.JspWriter JSP 페이지에서 결과를 출력
session javax.servlet.http.HttpSession 세션 정보를 저장
application javax.servlet.ServletContext 컨텍스트 정보를 저장
pageContext javax.servlet.jsp.PageContext JSP 페이지에 대한 정보를 저장
page java.lang.Object JSP 페이지의 서블릿 인스턴스를 저장
config javax.servlet.ServletConfig JSP 페이지에 대한 설정 정보를 저장
exception java.lang.Exception 예외 발생 시 예외 처리

 

앞에서 많이 본 것들이죠? 기능도 동일한 기능을 제공합니다.

 

 

내장 객체 스코프

 

내장 객체 서블릿 스코프
page this 한 번의 요청에 대해 하나의 JSP 페이지를 공유합니다.
request HttpServletRequest 한 번의 요청에 대해 같은 요청을 공유하는 JSP 페이지를 공유합니다.
session HttpSession 같은 브라우저에서 공유합니다.
application ServletContext 같은 애플리케이션에서 공유합니다.

 

 

session 내장 객체 예제

 

// java
HttpSession session = request.getSession();
session.setAttribute("name", "김철수");

// JSP
<%
	String name = (String)session.getAttribute("name");
%>

 

JSP 는 session 내장 객체에 접근할때 java 와 다르게 자동으로 세션 객체를 생성하므로 getSesstion 을 하여 session 을 얻을 필요가 없습니다.


그럼 application 객체도 자동으로 생성해주겠죠?

 

 

application 내장 객체 예제

// set JSP
<%
	application.setAttribute("name", "김철수");
%>


// get JSP
<%
	String name = application.getAttribute("name");
%>

 

앞에서 본 것과 마찬가지로 session 은 브라우저 범위이고 application 프로그램 범위이므로 session 은 같은 브라우저 내에서는 동일한 결과를 출력할 것이고 다른 브라우저에서는 결과 값이 없습니다.

application 은 다른 브라우저에서도 값이 출력됩니다.

 

 

request 내장 객체 예제

 

// request1.jsp

...
<%
	request.setAttribute("name", "김철수");
%>

...

<%
	ReqeustDispatcher dispatch = request.getRequestDispatcher("request2.jsp");
    dispatch.forward(request, response);
%>
// request2.jsp

<%
	String name = (String)request.getAttribute("name");
%>

...

<%
	<h1>호갱님의 이름은 <%=name %> 입니다.</h1>
%>

 

 

out 내장 객체 예제

 

...
<h1><% out.println("호갱님의 이름은 " + name + "입니다."); %></h1>
...

 

 

여기까지 임미다.

728x90