JSP 페이지가 생성하는 모든 내용은 out기본객체를 통해 전송됨
<% out.println("안녕하세요!"); %>
print() : 데이터 출력
println() : 데이터 출력 후 줄바꿈
newLine() : 줄바꿈
out기본객체는 기본적으로 16Kb크기의 버퍼를 내부적으로 사용함
버퍼 관련 메소드
getBuffreSize() : 버퍼의 크기를 구함
getRemaining() : 현재 남은 버퍼 크기를 구함
isAutoFlush() : 버퍼가 다 찼을 때 자동으로 플러쉬 할 경우 true리턴
JSP페이지와 1대1로 연결된 객채
pageContext가 제공하는 기본객체 접근 메서드
getException()은 JSP페이지가 에러페이지인 경우에만 의미가 있음
웹 어플리케이션 전반에 걸쳐서 사용되는 정보를 담고 있음(특정 웹 어플리케이션에 포함된 모든 JSP페이지는 하나의 application 기본객체를 공유함)
웹 어플리케이션을 초기화하는데 필요한 설정정보를 지정하기 위해서 사용( 데이터베이스 연결 관련 설정 파일의 경로, 로깅 설정파일, 웹 어플리케이션의 주요 속성 정보를 담고 있는 파일의 경로 등을 지정할 때)
초기화 파라미터 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>
현재 사용 중인 웹 컨테이너에 대한 정보를 읽어오는 메서드
서버 정보 : <%=application.getServerInfo() %><br> 서블릿 규약 메이저 버전 : <%= application.getMajorVersion %><br> 서블릿 규약 마이너 버전 : <%= application.getMinorVersion %>
웹 컨테이너가 사용하는 로그 파일에 로그메시지를 기록할 수 있음
application.log("로그 메시지");
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객체를 리턴
하나의 JSP페이지를 처리할 때 사용되는 영역 (한 번의 요청에 대해서 하나의 JSP페이지를 범위로 가짐)
하나의 HTTP요청을 처리할 때 사용되는 영역
URL을 입력하거나 링크를 클릭해서 이동할 때, 웹 브라우저가 웹 서버에 전송하는 요청이 하나의 request영역
하나의 웹 브라주어와 관련된 영역 (세션이 생성되면 하나의 웹 브라우저와 관련된 모든 요청은 하나의 session영역에 포함됨)
하나의 웹 어플리케이션과 관련된 전체 영역
4개의 기본객체(pageContext, request, session, application)가 존재하는 동안 기본 객체의 속성을 사용할 수 있음
이 속성은 JSP페이지 사이에서 정보를 주고받거나 공유하기 위한 목적이며 <속성이름, 값>의 형태를 가짐
메소드
setAttribute(String name, Object value) : 이름이 name인 속성의 값을 value로 지정
getAttribute(String name) : 이름이 name인 속성의 값을 구함
removeAttribute(String name) : 이름이 name인 속성을 삭제
getAttributeNames() : 속성의 이름 목록을 구함 (pageContext는 제공하지 않음)
속성의 이름은 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");
가장 많이 사용하는 기본객체는 request와 session(로그인 등 사용자 인증정보 저장)