application
웹 어플리케이션 당 하나만 생성되며 모든 JSP 페이지에서 접근 가능하다.
application 객체의 타입은 ServletContext이며 주로 웹 어플리케이션에서 이용하는
정보 저장, 서버 정보, 서버의 물리적 경로 등을 얻는 데 사용된다.
[이번 시간에 하는 일]
- web.xml에 설정한 컨텍스트 초기화 매개변수 읽어오기
- 폴더의 물리적 경로 알아내기
web.xml
웹 어플리케이션에 대한 여러 설정을 저장하는 곳이며, 배포 서술자(deployment descriptor)로도 불린다.
물리적 경로
특정 파일 또는 폴더의 전체 경로(절대 경로)를 말하며 파일 업로드 및 입출력 작업 시에 주로 사용된다.
[작업 순서]
- web.xml에 초기화 매개변수 추가
- application 내장 객체 이용하는 예제 코드 작성
- 부가 설명 작성
1. web.xml에 매개변수 추가
책에서는 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. 결과 화면
경로가 좀 길긴 하지만 결과적으로 모두 같은 경로를 출력하는 것을 볼 수 있다.
스크립틀릿이나 표현식을 할 때는 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 |