관련글



JSP application 기본 객체(javax.servlet.ServletContext)
application 객체는 JSP 기본객체로 JSP 페이지에서 따로 선언하지 않아도 참조하여 사용 가능합니다. application 기본객체는 자신이 속한 웹어플리케이션 범위 안의 모든 JSP 범위에서 공유됩니다.

application 객체는 이름 그대로 웹 어플리케이션에 대한 정보들을 가지고 있습니다. 웹 어플리케이션이 시작될 때 설정되는 초기 설정 정보 또한 담고있어 설정값들을 얻을 수 있고, 웹 어플리케이션이 사용자는 파일 자원도 가져올 수 있습니다.



web.xml에 초기 설정값 정의하기


Servlet 스펙에 따르면 웹어플리케이션이 구동될 때 웹 어플리케이션 경로의 WEB-INF/web.xml 파일을 참고하도록 정의되어 있습니다. web.xml은 배포서술자(Deployment Descriptor) 라고도 하며, 웹 어플리케이션에 대한 전반적인 설정을 하는 xml 설정파일입니다. 이곳에 서블릿 맵핑정보나 웹어플리케이션 운용시 사용하는 설정 값들을 정의할 수 있습니다.
(서블릿 3.0 부터는 web.xml 대신 자바 클래스만으로 어플리케이션 설정이 가능해졌습니다.)



web.xml을 다음과 같이 작성합니다. 설정값이 여러개인 경우에는 context-param 요소를 여러개 사용할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
 
 
     <context-param> 
           <description>설정값에 대한 설명으로 필수 요소는 아닙니다.</description> 
           <param-name>param_name</param-name> 
           <param-value>param_value</param-value> 
     </context-param> 
 
 
</web-app> 
cs

description - ServletContext (application객체)에 전달할 파라미터에 대한 설명입니다. 필수값은 아닙니다.
param-name - ServletContext (application객체)에 전달할 파라미터 이름입니다.
param-value - ServletContext (application객체)에 전달할 파라미터 값입니다.




웹 어플리케이션 설정값을 사용하는 이유
web.xml에 초기 설정값을 설정해주면 어떤 장점이 있을까요? web.xml 같은 설정파일에 값을 설정해두고 관리하면 코드에 설정값들을 하드코딩하여 관리하는 것보다 유지보수 및 개발 생산성이 높아집니다.

어플리케이션을 개발하다보면 데이터베이스 연동에 관련된 설정값들이나, 로그 관련 설정, 첨부파일 경로등 어플리케이션 개발시 사용되는 값들이 있습니다. 특히 이러한 값들은 특성상 자주 바뀔 수 있습니다. 예를들어 개발용 테스트 데이터베이스를 기준으로 개발하다가 실제 운영환경에 배포할때는 운영용 데이터베이스 설정으로 바꿔 주어야 합니다.

이때 소스에 이러한 정보들을 하드코딩하게 되면, 정보가 변경될때마다 컴파일 및 빌드, 배포를 다시 해주어야 합니다. 실제 배포되는 웹 어플리케이션은 규모가 클수록 컴파일 및 빌드 배포 시간이 길어지고 어렵기 때문에 이러한 시간은 큰 시간 자원 낭비로 이어질 수 있는데, 설정값들을 파일로 관리하게 되면 해당 파일의 설정값들은 수정 후 서버를 재시작하면 되므로 효율이 늘어나는 것입니다.





웹 어플리케이션 설정값 application 객체를 통해 가져오기
application 기본 객체를 이용하여 web.xml에 설정해준 초기 설정값을 가져올 수 있습니다. 설정값에 대한것은 다음에 두 가지 메서드를 사용합니다.
메서드
반환타입
설명
getInitParameterNames()
Enumeration<String>
설정 파라미터 이름 목록을 리턴합니다.
getInitParameter(String paramName)
String
설정 파라미터명을 인자로 전달하면 그에 따른 값이 문자열로 리턴됩니다.

paramTest.jsp 작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@page import="java.util.Enumeration"%> 
     
<!DOCTYPE html> 
<html> 
<head> 
     <meta charset="UTF-8"> 
</head> 
<body> 
     <% 
           //param-name 목록을 가져옵니다. 
           Enumeration<String> paramNames = application.getInitParameterNames();
     
           while(paramNames.hasMoreElements()){ 
                
                //param-name을 얻어서 param-name에 해당하는 param-value를 구합니다. 
                String paramName = paramNames.nextElement();
                String paramValue = application.getInitParameter(paramName);
                
                System.out.println(paramName + " = " + paramValue); 
           }
     %> 
</body> 
</html> 
cs


이클립스로 톰캣을 띄우고 paramTest.jsp 페이지를 요청하면 콘솔창에는 web.xml에서 이전에 설정해두었던 설정값들이 출력됩니다.
param_name2 = param_value2                                                                            
param_name = param_value
cs









블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!