웹 브라우저에 변수 등에 값을 출력 할 때 주로 사용한다. 표현식인 <%=%>를 더 많이 사용하기 때문에 jsp에서는 잘 사용하지않는다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>outMain</title>
<%
//버퍼 내용 삭제하기
out.print("출력되지않는 텍스트"); //버퍼에 저장
out.clearBuffer(); // 버퍼를 비워줌.
out.print("<h2>out 내장 객체</h2>");
//버퍼 크기 정보 확인
out.print("출력 버퍼의 크기 : " + out.getBufferSize() + "<br>");
out.print("남은 버퍼의 크기 : " + out.getRemaining() + "<br>");
out.flush(); //버퍼 내용 출력
out.print("flush 후 버퍼의 크기 : "+ out.getRemaining()+ "<br>");
//다양한 타입의 값 출력
out.print(1);
out.print(false);
out.print('가');
%>
</head>
<body>
</body>
</html>
웹 애플리케이션당 하나만 생성된다.
모든 JSP 페이지에서 접근이 가능하다.
타입은 ServletContext.
주로 웹 애플리케이션 전반에서 이용하는 정보를 저장하거나, 서버의 정보, 서버의 물리적 경로 등을 얻어오는 데 사용한다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>web.xml에서 설정한 내용 읽어 오기</h2>
초기화 매개변수 : <%= application.getInitParameter("INIT_PARAM")%>
<h2>서버의 물리적 경로 얻어오기</h2>
application 내장 객체 : <%= application.getRealPath("/02")%>
//현재 예제에서 작성중인 폴더 02의 물리적 경로를 얻어와 출력한다.
<h2>선언부에서 application 내장 객체 사용하기</h2>
<%! // 선언부에서는 변수 초기화나 메소드 선언가능
public String useImplicitObject(){
return this.getServletContext().getRealPath("/02");
}
public String useImplicitObject(ServletContext app){
return app.getRealPath("/02");
}
%>
<ul>
<li>this 사용 : <%= useImplicitObject() %> </li>
<li>내장 객체를 인수로 전달 : <%= useImplicitObject(application) %></li>
</ul>
</body>
</html>
//web.xml
//web.xml에 설정한 컨텍스트 초기화 매개변수를 읽어오고 폴더의 물리적 경로를 알아내자
//web.xml은 웹 애플리케이션에 대한 여러 가지 설정을 저장하는 곳으로 배포 서술자라고 부른다.
//물리적 경로란? 특정 파일이나 폴더의 전체 경로, 즉 절대 경로를 말하며, 파일을 업로드하거나 입출력 작업 시에 주로 사용합니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>INIT_PARAM</param-name>
<param-value>web.xml에 저장한 초기화 매개변수</param-value>
</context-param>
</web-app>
