application 

웹 어플리케이션 당 하나만 생성되며 모든 JSP 페이지에서 접근 가능하다.

application 객체의 타입은 ServletContext이며 주로 웹 어플리케이션에서 이용하는

정보 저장, 서버 정보, 서버의 물리적 경로 등을 얻는 데 사용된다.

 

[이번 시간에 하는 일]

  • web.xml에 설정한 컨텍스트 초기화 매개변수 읽어오기
  • 폴더의 물리적 경로 알아내기

web.xml

웹 어플리케이션에 대한 여러 설정을 저장하는 곳이며, 배포 서술자(deployment descriptor)로도 불린다.

 

물리적 경로

특정 파일 또는 폴더의 전체 경로(절대 경로)를 말하며 파일 업로드 및 입출력 작업 시에 주로 사용된다.

 

[작업 순서]

  • web.xml에 초기화 매개변수 추가
  • application 내장 객체 이용하는 예제 코드 작성
  • 부가 설명 작성

 

1. web.xml에 매개변수 추가

web.xml에 context-param 태그와 이름 및 값 입력

책에서는 webContent 안에 web.xml이 있다고 했지만 나는 server 안에 있는 web.xml에 작성했다.

web.xml에서 Ctrl + Shift + F키를 눌러 정렬을 하고 보니 미친 듯한 라인 수를 볼 수 있었다.

 

2.  application 내장 객체 예제 코드

<h2>(1) web.xml에 설정한 내용 읽어오기</h2>	
초기화: <%=application.getInitParameter("INIT_PARAM") %>

<h2>(2) 서버의 물리적 경로 읽어오기</h2>
application 내장 객체: <%=application.getRealPath("CH2") %>


<h2>(3) 선언부에서 application 내장 객체 사용하기</h2>
<%!
//선언부
public String useCH2() {
	return this.getServletContext().getRealPath("/CH2");
}
public String useCH2(ServletContext app) {
	return app.getRealPath("/CH2");
}
%>

<ul>
<!-- (4) -->
<li>this 사용: <%=useCH2() %></li>
<li>내장 객체 인수로 전달: <%=useCH2(application) %></li>
</ul>

 

3. 부가 설명

(1) application.getInitParameter("INIT_PARAM")

getInitParameter() 메소드를 이용하여 web.xml에 설정한 초기화 매개변수를 읽어왔다.

web.xml에서 설정한 INIT_PARAM의 VALUE값이 출력된 것을 볼 수 있다.

 

(2) application.getRealPath("CH2")

getRealPath() 메소드를 이용하여 예제 코드를 작성한 ("CH2") 폴더의 물리적 경로를 얻어와서 출력하였다.

인수는 폴더명으로 작성하였다.

 

(3) 선언부

자기 자신을 반환하는 메소드냐 값을 전달한 메소드냐의 차이로 나뉜다. 

각각 필요한 servlet-context를 첫 번째 메소드는 this로 받고, 두 번째 메소드는 매개변수로 받는다.

 

(4) 출력부분

this 사용에서는 this를 이용한 메소드를 호출하고 

내장 객체 인수 전달에서는 applicaiton 내장 객체를 인수로 호출하였다.

 

4. 결과 화면

ApplicationMain.jsp 결과 화면

경로가 좀 길긴 하지만 결과적으로 모두 같은 경로를 출력하는 것을 볼 수 있다.

스크립틀릿이나 표현식을 할 때는 application 내장 객체를 그대로 사용하면 되지만

선언부에서는 application 내장 객체를 바로 사용하는 것은 불가능하다.

 

따라서 선언부로 사용하기 위해서는 this를 통해 application 내장객체를 얻어오거나

인수로 전달해야 사용을 할 수 있다.

 

'ebook > jsp' 카테고리의 다른 글

[10] 내장 객체의 영역 (Scope)  (0) 2022.06.22
[9] 내장 객체 - exception  (0) 2022.05.30
[7] 내장 객체 - out  (0) 2022.05.27
[6] 내장 객체 - response  (0) 2022.05.25
[5] 내장 객체 - request  (0) 2022.05.24

+ Recent posts