Front-End/JSP

[JSP] JSP 내장 객체 application 메서드 및 예제

현기 2022. 9. 19. 20:20

JSP 내장 객체란 컨테이너에 의해 미리 선언된 자바 클래스의 참조 변수다.

즉, JSP에서 선언하지 않고 사용할 수 있는 객체다.

request, session, application 등 총 9개가 존재한다.

 

application은 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하기 위해 사용한다.

처음 컨테이너가 구동될 때 단 하나의 객체만 생성됩니다. 기본적으로 서버에 대한 정보나 서블릿에 대한 정보들을 가지고 있는데 어플리케이션(프로젝트 단위) 내 모든 JSP/서블릿들이 공유하는 객체다 보니 데이터를 편리하게 운송하는 수단으로 주로 쓰입니다.

📝 application 메서드

 

⦁ 개발자를 위한 서버 관련 정보 메서드

getServerInfo() JSP/서블릿 컨테이너 이름과 버전 반환
getMajorVersion() 컨테이너가 지원하는 서블릿 API의 Major 버전 정보 반환
getMinorVersion( ) 컨테이너가 지원하는 서블릿 API의 Minor 버전 정보 반환

 

⦁ 서버 자원 정보 메서드

getMimeType(filename) 문자열 filename에 지정된 파일에 대한 MIME type을 반환
getResource(path) 문자열 path에 지정된 자원을 URL 객체로 반환
getResourceAsStream(path) 문자열 path에 지정된 자원을 InputStream 객체로 반환
getRealPath(path) 문자열 path에 지정된 자원을 파일 시스템의 실제 경로로 반환
getContext(path) 문자열 path에 지정된 자원의 컨텍스트 정보를 반환
getResourceDispatcher(path) 문자열 path에 지정된 자원을 위한 request dispatcher를 생성

 

⦁ 로그 관련 메서드

log(message) 문자열 message 내용을 로그 파일에 기록
로그 파일 위치는 컨테이너에 따라 다름
log(message,exception) 예외 상황과 관련한 정보를 포함하여 로그 파일에 기록

 

⦁ 속성 관련 메서드

getAttribute(String name) 문자열 name에 해당하는 속성값이 있다면 Object 형태로 가져옴. 
반환 값에 대한 적절한 형 변환이 필요
getAttributeNames( ) 현재 application 객체에 저장된 속성 이름을 Enumeration 형태로 가져옴.
setAttribyte
(String name, Object value)
문자열 name 이름으로 Object 형 데이터를 저장
Object 형이므로 자바 클래스 형태로도 저장 가능
removeAttribute(String name) 문자열 name에 해당하는 속성을 삭제

 

프로젝트 파일의 경로와 톰캣 경로가 다른 경우가 많아서, 경로 에러가 빈번하게 발생한다고 한다.

따라서 getRealPath(path) 를 통해 실제 경로를 확인하고 코드를 작성해야 한다.

 

 


application 예제

⦁ 1 페이지

 

🧾 소스코드

더보기
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>application 예제</h3>
<hr/>
1. 서버정보 : <%= application.getServerInfo() %> <br/><br/>
2. 서블릿 API 버전 정보 : <%=application.getMajorVersion()%>.<%=application.getMinorVersion()%> <br/><br/>
3. 파일의 실제 경로 : <%= application.getRealPath("/") %> <br/><br/>

<hr/>
<%
application.setAttribute("username", "현기");
application.setAttribute("count", 1);
%>
setAttribute로 username 변수에 "현기" 설정 <br/><br/>
<a href="2.jsp"> 확인하기 </a>

</body>
</html>

 

⦁ 2 페이지

 

🧾 소스코드

더보기
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<p>username에 설정된 값은 <%=application.getAttribute("username")%></p>
	
	<%
    //카운트
    Integer count = (Integer) application.getAttribute("count");
    count++;
    application.setAttribute("count", count);
	%>
	
	count:<%=count%>
</body>
</html>

 


 


참고 문헌 : 몰입형 강의

https://codevang.tistory.com/199