[Servlet] 초기화 파라미터
초기화 파라미터
초기화 매개변수는 웹 페이지가 실행될 때 필요한 데이터를 전달해 준다. 그리고 초기화 매개 변수는 서블릿 프로그램이 처음 실행될 때 클라이언트가 아닌 서버로부터 넘겨받는 값이다.
웹 프로그램은 모든 실행 시작점이 웹 서버의 구동이다. 이때 web.xml 파일이 자동으로 로드된다.
여기에 초기화 매개변수를 등록해서 웹 페이지가 매개변수의 값을 읽어들인다.
이렇게 해서 서블릿을 재컴파일하지 않고서도 원하는 초기값을 웹 페이지에 전달할 수 있다.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Round14_01_Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
ServletConfig config = this.getServletConfig();
//ServletConfig 객체를 획득한다.
//실제로는 HttpServlet이 ServletConfig를 구현했기 때문에
//이렇게 객체를 획득할 필요 없이 this를 사용해도 무방하다.
String start = config.getInitParameter("start");
String end = this.getInitParameter("end");
//config 객체를 통해서도 this를 통해서도 초기화 매개변수를 획득할 수 있다.
int start_su = Integer.parseInt(start);
int end_su = Integer.parseInt(end);
//초기화 매개변수로 전달된 값은 문자열이므로 숫자로 변환한다.
int hap = 0;
for(int i = start_su; i <= end_su; ++i)
hap += i;
//시작 수에서 끝 수까지의 총합을 구한다.
response.setContentType("text/html;charset=euc-kr");
//응답에 대한 MIME과 Encode를 설정한다.
PrintWriter out = response.getWriter();
//출력 객체를 생성한다.
out.println("<html><body><center>");
out.println(start_su + " ~ " + end_su + "사이의 합은 ");
out.println(hap + "입니다.");
out.println("</center></body></html>");
//결과를 출력한다.
out.close();
//출력 객체를 종료한다.
}
}
web.xml 파일에 서블릿을 등록하면서 다음과 같이 초기화 매개변수로 start와 end의 값을 등록한다. 등록되는 모든 데이터는 자료형이 String이다.
<servlet>
<servlet-name>My01</servlet-name>
<servlet-class>Round14_01_Servlet</servlet-class>
<init-param>
<param-name>start</param-name> // String start = config.getInitParameter("start");에서 start의 초기값은 '1'이다.
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>end</param-name> // String end = this.getInitParameter("end");에서 end의 초기값은 '10'이다.
<param-value>10</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>My01</servlet-name>
<servlet-class>Round14_01_Servlet</servlet-class>
</servlet>
1. Servlet 초기화 파라미터의 종류
(1) 초기화 파라미터
처음 WAS가 기동될 때 읽어 들이는 파라미터값을 초기화 파라미터라고 합니다.
종류에는 1) 서블릿 초기화 파리미터 와 2) 컨텍스트 초기화 파라미터가 있습니다.
(2) 서블릿 초기화 파라미터(Servlet Initialize Parameter)
1) web.xml에 다음과 같이 기술하고
<servlet>
<init-param><!-- 초기화 파라미터라고 불리는 설정 값을 지정할 때 사용한다.-->
<param-name>AdminEmail</param-name><!-- 초기화 파라미터의 이름을 지정한다.-->
<param-value>admin@admin.com</param-value><!-- 초기화 파라미터의 값을 지정한다.-->
</init-param>
</servlet>
2) Servlet Code에서
getServletConfig().getInitParameter("AdminEmail")); 와 같은 코드로 초기화 파라미터 값을 얻을 수 있습니다.
서블릿 초기화 파라미터는 컨텍스트 초기화 파라미터와 달리 서블릿에서만 읽어 들일 수 있습니다.
이 값들을 JSP에서 사용하기 위해서는 HttpServletRequest의 Attribute 속성을 이용해서 JSP로 모델 정보를 넘겨야 합니다.
example)
< TODO Servlet>
String AdminEmail = (String)getServletConfig.getInitParameter("AdminEmail");
request.setAttribute("AdminEmail",AdminEmail);
<TODO JSP>
String AdminEmail = (String)request.getAttribute("AdminEmail");
(3) 컨텍스트 초기화 파라미터(Context Initialize Parameter)
1) web.xml에 다음과 같이 기술하고
<context-param>
<param-name>adminEmail</param-name>
<param-value>admin@admin.com</param-value>
</context-param>
주의 : <context-param>은 <web-app> 하위에 존재하지 <servlet> 하위에 존재하지 않습니다.
2) Servlet혹은 JSP에서
getServletContext().getInitParameter("adminEmail");
와 같은 코드로 코딩하면 값을 얻을 수 있습니다.
(4) 정리
정리하면. 서블릿 초기화 파라미터는 ServetConfig 에서 읽어들이며, ServletConfig는 서블릿 당 하나가 생성됩니다.
컨텍스트 초기화 파라미터는 ServetContext에서 읽어들이고, 웹 어플리케이션 당 하나가 생성됩니다.
즉 웹 어플리케이션 전체의 전역적인 파라미터 설정을 원한다면 컨텍스트 초기화 파라미터에 정의 하시면 되고,특정 서블릿에서 처리 하기 위한 어떤 값을, 즉 서블릿범위 정도에서 처리하기 위한 값을 정의 한다면 서블릿 초기화 파라미터를 사용하면 되겠습니다.
(5) 잘 정리된 표
출처: https://devbox.tistory.com/entry/Servlet-초기화-매개변수?category=574550 [장인개발자를 꿈꾸는 :: 기록하는 공간]
'Java 관련 > JSP,Servlet' 카테고리의 다른 글
[Servlet] 서블릿 이벤트 (0) | 2020.06.10 |
---|---|
[Servlet] 서블릿 필터 (0) | 2020.06.10 |
[Servlet] 서블릿 기초 (0) | 2020.06.10 |
[Servlet] 데이터 저장 영역 (0) | 2020.06.10 |
[Servlet] web.xml 주요 태그 (0) | 2020.06.10 |
[Servlet] 웹 프로그램 기본파일(tomcat환경) (0) | 2020.06.10 |
[JSP] 적절한 include 사용하기 (0) | 2020.02.13 |
[JSP] 웹에서 세션(session)의 사용 (0) | 2019.07.17 |