본문 바로가기

JSP

웹어플리케이션 초기화 파라미터 사용법(application객체)

# web.xml에 파라미터 변수를 선언하고 jsp에서 가져와보자



#웹어플리케이션 초기화 파라미터 읽어오기 

[ex] application.getInitParameter("aa") 사용법
web.xml ( <web-app> 안에 ) 다음과같이추가해줌
=======
<web-app>
  <context-param>
       <param-name>aa</param-name>
       <param-value>bb</param-value>
  </context-param>

  <context-param>
       <param-name>cc</param-name>
       <param-value>dd</param-value>
  </context-param>
</web-app>

a.jsp
=========
<%=
      application.getInitParameter("aa")
%>


=> bb 출력됨

-    만약 데이터베이스의 아이디와 비밀번호를 
    a1.jsp부터 a100.jsp전부에서 데이터베이스 사용할경우 만약 아이디가 변경되면
   전부다 변경해야함 
   하지만 이렇게 초기화파라미터로 설정해두고 각 모든 jsp페이지에서 파라미터를 가져다쓴다면 web.xml에 파라미터값만 바꾸면됨



[ex] application.getInitParameterNames() 사용법
a.jsp
===============
<%
Enumeration<String> s=application.getInitParameterNames();
while(s.hasMoreElements()){
     out.println(s.nextElement()+"<br>");
}
%>


=> aa cc 출력됨




[ex] localhost:8282/ppp1/app.do 해서 실행시 초기화파라미터에저장된 bb출력되기
     ( 서블릿과 url패턴을 사용하는법(초기화파라미터설정법) + application과 out을 생성해보기 )

1. 서블릿을 패키지 a.b 
         서블릿명을 Test로 만든다

2. 서블릿 doGet부분에 추가
                  ServletContext application=this.getServletContext();
                  PrintWriter out=response.getWriter();

                  String a=application.getInitParameter("aa");
                  out.println(a);
-    this는 HttpServlet

3. 실행시 web.xml에서 <url-pattern> /app.do </url-pattern> 이라고되어있기에 실행시
     http://localhost:8282/app1/app.do 하면 bb 출력됨
     
     만약 <url-pattern>에 /가없이 app.do 라고 정의해두면     
     현재프로젝트나 카테고리명등 어디서든 app.do를 실행가능??? => 그냥 오류나네....



          

[ex] web.xml의 서블릿을 자세히 살펴보기
  <servlet>
    <description></description>
    <display-name>Test</display-name>   1
    <servlet-name>Test</servlet-name>
    <servlet-class>a.b.Test</servlet-class> 3
  </servlet>
  <servlet-mapping>
    <servlet-name>Test</servlet-name> 2
    <url-pattern>/app.do</url-pattern> 4
  </servlet-mapping>

-    1 의 이름과 2의 이름은 같아야함
-    3경로의 Test는 서블릿이어야함 ( HttpServlet 의 자손이어야함! )
-    4에의해는 ~8282/프로젝트명/app.do 해서 실행함







# <init-param> 의 용도 (위치는 서블릿태그안에! )
  (위에배운거(<context-param>)랑 차이 비교할것)
web.xml
============
  <web-app>
<context-param>          // context-param은 application내장객체로 접근가능하며 
                                   // 한 web플젝에 공통으로 쓰는것들
  <param-name>aa</param-name>
  <param-value>bb</param-value>
</context-param>

<servlet>
    <description></description>
    <display-name>Test</display-name>
    <servlet-name>Test</servlet-name>
    <servlet-class>a.b.Test</servlet-class>

    <init-param>   이거추가     // init-param은 해당 서블릿에서 쓰는거 
   <param-name>ee</param-name>
   <param-value>ff</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/app.do</url-pattern>
</servlet-mapping>
</web-app>   


Test.java ( 서블릿... HttpServlet 자손 )
=============
            ServletConfig config=this.getServletConfig();
            String b=config.getInitParameter("ee");
            out.println(b);

=> 실행시 ff가 출력됨





[*] <init-param>와 <context-param>의 차이점 
<init-param>은 해당서블릿에서만 사용가능
<context-param>는 모든서블릿에서 사용가능

이거 mvc패턴에서 꼭나옴!!!