JSP의 기본객체와 4가지 영역

HYUNBIN CHO·2021년 4월 1일
0

1. 기본객체 정리

2. out

JSP 페이지가 생성하는 모든 내용은 out기본객체를 통해 전송됨

<% out.println("안녕하세요!"); %>

1) 메소드

print() : 데이터 출력
println() : 데이터 출력 후 줄바꿈
newLine() : 줄바꿈

2) 퍼버와의 관계

out기본객체는 기본적으로 16Kb크기의 버퍼를 내부적으로 사용함
버퍼 관련 메소드
getBuffreSize() : 버퍼의 크기를 구함
getRemaining() : 현재 남은 버퍼 크기를 구함
isAutoFlush() : 버퍼가 다 찼을 때 자동으로 플러쉬 할 경우 true리턴

3. pageContext

JSP페이지와 1대1로 연결된 객채

1) 대표적인 기능

  1. 기본객체 구하기

    pageContext가 제공하는 기본객체 접근 메서드

    getException()은 JSP페이지가 에러페이지인 경우에만 의미가 있음

  2. 속성처리
  3. 페이지 흐름 제어
  4. 에러데이터 구하기

4. application

웹 어플리케이션 전반에 걸쳐서 사용되는 정보를 담고 있음(특정 웹 어플리케이션에 포함된 모든 JSP페이지는 하나의 application 기본객체를 공유함)

1. 초기화 파라미터 읽어오기

웹 어플리케이션을 초기화하는데 필요한 설정정보를 지정하기 위해서 사용( 데이터베이스 연결 관련 설정 파일의 경로, 로깅 설정파일, 웹 어플리케이션의 주요 속성 정보를 담고 있는 파일의 경로 등을 지정할 때)

초기화 파라미터 web.xml파일에 추가

<context-param>
	<description>로깅여부</description> // 파라미터 설명(선택)
        <param-name>logEnabled</param-name> // 파라미터 이름
  	<param-value>true</param-value> // 파라미터 값
</context-param>

초기화 파라미터 읽어오기

<ul>
<%
    Enumeration<String> initParamEnum = application.getInitParameterNames();
    while(initParamEnum.hasMoreElements()){
    	String initParamName = initParamEnum.nextElement();
%>
<li><%= initParamName %> = <%= application.getInitParameter(initParamName) %>
<% } %>
</ul>

2. 서버 정보 읽어오기

현재 사용 중인 웹 컨테이너에 대한 정보를 읽어오는 메서드

서버 정보 : <%=application.getServerInfo() %><br>
서블릿 규약 메이저 버전 : <%= application.getMajorVersion %><br>
서블릿 규약 마이너 버전 : <%= application.getMinorVersion %> 

3. 로그 메시지 기록

웹 컨테이너가 사용하는 로그 파일에 로그메시지를 기록할 수 있음

application.log("로그 메시지"); 

4. 자원 구하기

desktop/project/message/notice.txt 와 같이 절대경로를 이용하여 자원을 읽어옴
하지만 이렇게 절대경로를 사용해 파일을 읽어오면 유지보수에 문제가 생길 수 있음
예를 들어 버전 업데이트를 하여 project1.1로 변경이 되었다고 한다면 notice.txt의 절대경로가 변경되기 때문

자원에 접근하는 메서드

<%
    String resourcePath = "/message/notice.txt";
%>    
  자원의 실제 경로 : <br>
  <%=application.getRealPath(resourcePath)%>
  <br>
  <%= resourcePath %>의 내용 <br>
  -------------------------<br>
  <%
     char[] buff = new char[128];
     int len = -1;
     try(InputStreamReader br = new InputStreamReader(application.getResourceAsStream(
     	 resourcePath), "UTF-8")){
         while((len = br.read(buff))!=-1){
         out.print(new String(buff, 0, len));
         }
     }catch(IOException ex){
     	out.println("예외발생 : " + ex.getMessage());
     }
  %>

getRealPath(String path) : 지정한 경로에 해당하는 자원의 시스템상에서의 경로를 리턴
getResource(String path) : 저장한 경로에 해당하는 자원에 접근할 수 있는 URL객체를 리턴

5. 웹 어플리케이션의 영역(scope)

1. page영역

하나의 JSP페이지를 처리할 때 사용되는 영역 (한 번의 요청에 대해서 하나의 JSP페이지를 범위로 가짐)

2. request영역

하나의 HTTP요청을 처리할 때 사용되는 영역
URL을 입력하거나 링크를 클릭해서 이동할 때, 웹 브라우저가 웹 서버에 전송하는 요청이 하나의 request영역

3. session영역

하나의 웹 브라주어와 관련된 영역 (세션이 생성되면 하나의 웹 브라우저와 관련된 모든 요청은 하나의 session영역에 포함됨)

4. application영역

하나의 웹 어플리케이션과 관련된 전체 영역

6. attribute 속성

1. 속성

4개의 기본객체(pageContext, request, session, application)가 존재하는 동안 기본 객체의 속성을 사용할 수 있음
이 속성은 JSP페이지 사이에서 정보를 주고받거나 공유하기 위한 목적이며 <속성이름, 값>의 형태를 가짐
메소드
setAttribute(String name, Object value) : 이름이 name인 속성의 값을 value로 지정
getAttribute(String name) : 이름이 name인 속성의 값을 구함
removeAttribute(String name) : 이름이 name인 속성을 삭제
getAttributeNames() : 속성의 이름 목록을 구함 (pageContext는 제공하지 않음)

2. 속성 값의 타입

속성의 이름은 String 타입, 값은 모든 클래스 타입이 올 수 있음
public void setAttribute(String name, Object value)
public Object getAttribute(String name)

session.setAttribute("session_start", new java.util.Date());
session.setAttribute("memberId", "abcde");
application.setAttribute("application_tmp", new File("/tmp"));

Date date = (Date)session.getAttribute("session_start");
String memberId = (String)session.getAttribute("memberId");
File tmpDir = (File)application.getAttribute("application_tmp");

3. 속성의 쓰임새


가장 많이 사용하는 기본객체는 request와 session(로그인 등 사용자 인증정보 저장)

profile
백견이 불여일타

0개의 댓글