1. 기본 객체
기본 객체 | 실제 타입 | 설명 |
request | javax.servlet.http.HttpServletRequest | 클라이언트의 요청 정보를 저장한다. |
response | javax.servlet.http.HttpServletResponse | 응답 정보를 저장한다. |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지에 대한 정보를 저장한다. |
session | javax.servlet.http.HttpSession | HTTP 세션 정보를 저장한다. |
application | javax.servlet.ServletContext | 웹 어플리케이션에 대한 정보를 저장한다. |
out | javax.servlet.jsp.JspWriter | JSP 페이지가 생성하는 결과를 출력할 때 사용되는 출력 스트림이다. |
config | javax.servlet.ServletConfig | JSP 페이지에 대한 설정 정보를 저장한다. |
page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 인스턴스이다. |
exception | java.lang.Throwable | 익셉션 객체, 에러 페이지에서만 사용된다. |
2. out
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/jsp/JspWriter.html
- 웹 브라우저에 데이터를 전송하는 출력 스트림이다.
- 비-스크립트 요소들(HTML 코드 or 텍스트)과 값을 출력하는 표션식의 결과는 out 기본 객체에 그대로 전달된다.
- JSP 페이지가 사용하는 버퍼는 실제로는 out 기본 객체가 내부적으로 사용하고 있는 버퍼이다.
- isAutoFlush() 메서드의 값을 결정하는 것은 page 디렉티브의 autoFlush 속성이다.
메서드 | 반환형 | 설명 |
print() | void | 데이터를 출력한다. |
println() | void | 데이터를 출력하고, \r\n 또는 \n을 출력한다. |
newLine() | void | \r\n 또는 \n을 출력한다. |
getBufferSize() | int | 버퍼의 크기를 구한다. |
getRemaining() | int | 현재 버퍼의 남은 크기를 구한다. |
clear() | void | 버퍼의 내용을 비운다. 만약 버퍼가 이미 플러시 되었다면 IOException을 발생시킨다. |
clearBuffer() | void | 버퍼의 내용을 비운다. clear() 메서드와 달리 버퍼를 플러시 한 경우에도 IOException을 발생시키지 않는다. |
flush() | void | 버퍼를 플러시한다. |
isAutoFlush() | boolean | 버퍼가 다 찼을 때 자동으로 플러시 할 경우 ture를 리턴한다. |
<!-- outObject.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page buffer="8kb" autoFlush="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% int a = 10, b = 5; %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>out 객체</title> </head> <body> <!-- out 기본 객체를 사용할 경우 복잡한 코드를 간단하게 표시할 수 있다. --> <h2>out 객체 미사용</h2> <% if (a == 10) { %> <%=a + "을 가진 변수는 'A' 입니다."%><br> <% } else if (b == 10) { %> <%=b + "을 가진 변수는 'B' 입니다."%><br> <% } %> <h2>out 객체 사용</h2> <% if (a == 10) { out.println(a + "을 가진 변수는 'A' 입니다.<br>"); } else if (b == 10) { out.println(b + "을 가진 변수는 'B' 입니다.<br>"); } %> <hr> <h2>버퍼 정보</h2> 버퍼 크기 : <%=out.getBufferSize()%><br> 남은 크기 : <%=out.getRemaining()%><br> auto flush: <%=out.isAutoFlush()%><br> </body> </html> <!-- 실행결과 out 객체 미사용 10을 가진 변수는 'A' 입니다. out 객체 사용 10을 가진 변수는 'A' 입니다. ----------------------------------------------- 버퍼 정보 버퍼 크기 : 8192 남은 크기 : 7753 auto flush: false -->
3. pageContext
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/jsp/PageContext.html
- 하나의 JSP 페이지와 1대1일 매핑되는 객체이다.
- JSP 페이지에서 직접적으로 사용하는 경우는 드물지만, 커스텀 태그를 구현할 대에는 많이 사용된다.
- getException() 메서드는 JSP 페이지가 에러 페이지인 경우에만 의미가 있다.
메서드 | 반환형 | 설명 |
getRequest() | ServletRequest | request 기본 객체를 구한다. |
getResponse() | ServletResponse | response 기본 객체를 구한다. |
getSession() | HttpSession | session 기본 객체를 구한다. |
getServletContext() | ServletContext | application 기본 객체를 구한다. |
getServletConfig() | ServletConfig | config 기본 객체를 구한다. |
getOut() | JspWriter | out 기본 객체를 구한다. |
getException() | Exception | exception 기본 객체를 구한다. |
getPage() | Object | page 기본 객체를 구한다. |
<!-- pageContext.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>page Context</title> </head> <body> <% HttpServletRequest httpRequest = (HttpServletRequest) pageContext.getRequest(); %> request 기본 객체와 pageContext.getRequest()의 동일 여부 : <%=request == httpRequest%><br> pageContext.getOut() 메서드를 사용한 데이터 출력 : <% pageContext.getOut().println("테스트!"); %> </body> </html> <!-- 실행결과 request 기본 객체와 pageContext.getRequest()의 동일 여부 : true pageContext.getOut() 메서드를 사용한 데이터 출력 : 테스트! -->
4. application
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html
- 특정 웹 어플리케이션에 포함된 모든 JSP 페이지는 하나의 application 기본 객체를 공유하게 된다.
- 웹 어플리케이션 전반에 걸쳐서 사용되는 정보를 담고 있다. (초기 설정 정보, 서버 정보, 자원 등)
4.1 웹 어플리케이션 초기화 파라미터 읽기
- 서블릿 규약은 웹 어플리케이션 전체에 걸쳐서 사용할 수 있는 초기화 파라미터를 제공하고 있다.
- 초기화 작업에 필요한 설정 정보를 지정하기 위해 사용한다. (데이터베이스 연결 설정 파일 경로, 로깅 설정 파일, 주요 속성 정보 파일 경로 등)
- 초기화 파라미터는 WEB-INF\web.xml 파일에 <context-param> 태그를 사용하여 추가할 수 있다.
- 초기화 파라미터를 추가하게 되면, application 기본 객체에서 제공하는 메서드를 사용하여 초기화 파라미터를 JSP 페이지에서 사용할 수 있게 된다.
- web.xml 파일이 변경될 경우 웹 어플리케이션을 다시 시작해야 적용되는 웹 컨테이너가 존재한다.
<context-param> <description>파라미터 설명(필수 아님)</description> <param-name>파라미터 이름</param-name> <param-value>파라미터 값</param-value> </context-param>
메서드 | 반환형 | 설명 |
getInitParameter(String name) | String | 이름이 name인 웹 어플리케이션 초기화 파라미터의 값을 읽어온다. 존재하지 않을 경우 null을 반환한다. |
getInitParameternames() | Enumeration | 웹 어플리케이션 초기화 파라미터의 이름 목록을 반환한다. |
<!-- web.xml --> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Blog</display-name> <context-param> <description>테스트 파라미터1</description> <param-name>testParamName</param-name> <param-value>gangzzang</param-value> </context-param> <context-param> <description>테스트 파라미터2</description> <param-name>testParamAge</param-name> <param-value>25</param-value> </context-param> </web-app>
<!-- readInitParameter.jsp --> <%@ page import="java.util.Enumeration"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>초기화 파라미터</title> </head> <body> <h2>초기화 파라미터 목록</h2> <hr> <ul> <% Enumeration initEnum = application.getInitParameterNames(); while (initEnum.hasMoreElements()) { String inParamName = initEnum.nextElement().toString(); %> <li><%= inParamName %> : <%= application.getInitParameter(inParamName) %> <% } //while %> </ul> </body> </html> <!-- 실행결과 초기화 파라미터 목록 ---------------------------------- testParamName : gangzzang testParamAge : 25 -->
4.2 서버 정보 읽기
- 웹 컨테이너에 대한 정보를 읽어오는 메서드를 제공한다.
메서드 | 반환형 | 설명 |
getServerInfo() | String | 서버 정보를 구한다. |
getMajorVersion() | String | 서버가 지원하는 서블릿 규약의 메이저 버전의 정수 부분을 반환한다. |
getMinorVersion() | String | 서버가 지원하는 서블릿 규약의 마이너 버전의 소수 부분을 반환한다. |
<!-- serverInfo.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>서버 정보</title> </head> <body> 서버정보 : <%=application.getServerInfo()%><br> 서블릿 규약 메이저 버전 : <%=application.getMajorVersion()%><br> 서블릿 규약 마이너 버전 : <%=application.getMinorVersion()%> </body> </html> <!-- 실행결과 서버정보 : Apache Tomcat/6.0.37 서블릿 규약 메이저 버전 : 2 서블릿 규약 마이너 버전 : 5 -->
4.3 로그 메시지 기록
- 웹 컨테이너가 사용하는 로그 파일에 로그 메세지를 기록 할 수 있는 메서드를 제공한다.
- 로그 메세지가 기록되는 파일은 웹 컨테이너에 따라서 다르다.
메서드 | 반환형 | 설명 |
log(String msg) | void | 로그 메세지 msg를 기록한다. |
log(String msg, Throwable throwable) | void | 로그 메세지 msg를 기록한다. 익셉션 정보도 함께 로그 파일에 기록한다. |
<!-- log1.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>로그 메세지</title> </head> <body> <% application.log("application 로그 메세지"); %> application 로그 메세지를 기록합니다. </body> </html> <!-- 실행 결과 application 로그 메세지를 기록합니다. --> <!-- 로그 파일 9월 17, 2013 11:38:20 오전 org.apache.catalina.coreApplicationContext log 정보: application 로그 메세지 -->
<!-- log2.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>로그 메세지</title> </head> <body> <% log("jsp 로그 메세지"); %> jsp 로그 메세지를 기록합니다. </body> </html> <!-- 실행 결과 jsp 로그 메세지를 기록합니다. --> <!-- 로그 파일 9월 17, 2013 11:40:44 오전 org.apache.catalina.coreApplicationContext log 정보: jsp : jsp 로그 메세지 -->
4.4 웹 어플리케이션의 자원 구하기
- JSP 페이지에서 웹 어플리케이션 디렉터리에 위치한 자원을 읽어올 수 있다.
메서드 | 반환형 | 설명 |
getRealPath(String path) | String | 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원의 시스템상에서의 자원 경로를 반환한다. |
getResource(String path) | URL | 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원에 접근할 수 있는 URL 객체를 반환한다. |
getResourceAsStream(String path) | InputStream | 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원으로부터 데이터를 읽어올 수 있는 InputStream을 반환한다. |
<!-- resource.jsp --> <!-- text.txt 저장되있는 내용 : 예제를 위한 test.txt 파일입니다. --> <%@page import="java.io.InputStreamReader"%> <%@page import="java.io.InputStream"%> <%@page import="java.io.BufferedReader"%> <%@page import="java.net.URL" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>자원 읽기</title> </head> <body> <% String resourcePath = "test.txt"; %> 자원의 실제 경로 : <%= application.getRealPath(resourcePath) %> <br> <br> <%= resourcePath %> 의 내용 <br> <hr> <% BufferedReader br = null; char[] buff = new char[512]; int len = -1; try { /* 지정한 경로에 해당하는 자원 URL 객체 */ URL url = application.getResource(resourcePath); /* 자원으로부터 데이터를 읽어오는 스트림 */ br = new BufferedReader(new InputStreamReader(url.openStream())); /* 스트림으로 데이터를 읽어와서 출력 */ while ((len = br.read(buff)) != -1) { out.print(new String(buff, 0, len)); } // while } catch (Exception e) { } finally { if (br != null) { try { br.close(); } catch (Exception e) {} } // if } // try - catch - finally %> </body> </html> <!-- 실행결과 자원의 실제 경로 : C:\Study\workspace_EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Blog\test.txt test.txt 의 내용 --------------------------------------------------------------------------------------------------------------------------------------------------------- 예제를 위한 test.txt 파일입니다. -->
'자바 > JSP' 카테고리의 다른 글
JSP 기본(내장) 객체의 속성(Attribute) (0) | 2015.12.22 |
---|---|
JSP 기본(내장) 객체 영역과 속성 (0) | 2015.12.22 |
JSP 실행(처리) 과정 (0) | 2015.12.22 |
JSP 기본(내장) 객체 - response (0) | 2015.12.22 |
JSP 기본(내장) 객체 - request (0) | 2015.12.22 |