티스토리 뷰

📌 javax.servlet.ServletConfig

  1. 서블릿 계층구조에서 본 것처럼 서블릿에 1:1 대응됨 ( 서블릿당 하나씩 생성 )
  2. 다른 서블릿에서는 사용 불가
  3. 기능?

      a. 초기화 파라미터 조회 ( key/value 쌍 )
          String s = getInitParameter(String name); 사용
          ⇒ web.xml에 서블릿을 맵핑할 때 key/value 쌍으로 값을 저장하고 필요 시 사용
          ⇒ key/value 쌍을 자바에 저장하면 수정 시 재컴파일이 필요함
          ⇒ 대표적인 예) 파일경로
           ⇒ 스프링 프레임워크 사용한다

 

 <servlet>
      <servlet-name>
      <servlet-class>A
	    <init-param>
           <param-name>dir_path</param-name>
	       <param-value>c:\temp</param-value>
	    </init-param>
	    <init-param>
           <param-name>x</param-name>
	       <param-value>y</param-value>
	    </init-param>
 </servlet>

         <servlet>
            <servlet-name>
            <servlet-class>B

 

 

    b. ServletConext 반환
        ServletContext ctx = getServletContext();

 

 

 


 

 

 

📌 javax.servlet.ServletContext

  1. web application ( 논리적인 명: 컨텍스트명 ) 당 한개만 생성
  2. 모든 서블릿에서 사용 가능
  3. 기능?
    a. 컨텍스트 파라미터 조회 ( key/value 쌍 )
    ServletContext ctx = getServletContext();
    String s = ctx.getInitParameter(String name); 사용
    ⇒ web.xml에 key/value 쌍으로 값을 저장하고 필요 시 사용
    ⇒ key/value 쌍을 자바에 저장하면 수정 시 재컴파일이 필요함
    ⇒ 대표적인 예) 파일경로
    ⇒ 스프링 프레임워크 사용한다.
    여러 서블릿이 사용 가능하다. ( 공유 가능 )
<!-- ServletContext getInitParameter() 사용, 모든 서블릿이 사용 가능 -->
<context-param>
	   <param-name>dir_path</param-name>
	   <param-value>c:\temp</param-value>
</context-param>

<servlet>
	<servlet-name>
    <servlet-class>A
<!-- ServletConfig의 getInitParameter() 사용, A 서블릿만 사용 가능 -->
	    <init-param>
           <param-name>dir_path</param-name>
	       <param-value>c:\temp</param-value>
	    </init-param>
</servlet>

 

 

 


 

📝 실습-ServletConfig

 

 

TestServlet.java

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TestServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("TestServlet");
		// ServletConfig의 getInitParameter(name)
		String dir_path = getInitParameter("dir_path");
		String email = getInitParameter("email");
		System.out.println(dir_path+"\t"+email);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

ExamServlet.java

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ExamServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ExamServlet");
		// ServletConfig의 getInitParameter(name)
		String dir_path = getInitParameter("dir_path");
		String email = getInitParameter("email");
		System.out.println(dir_path+"\t"+email);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

web.html

<?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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">

     <servlet>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>com.servlet.TestServlet</servlet-class>
        <init-param>
            <param-name>dir_path</param-name>
            <param-value>c:\\temp</param-value>
        </init-param>
        <init-param>
            <param-name>email</param-name>
            <param-value>aaa@google.com</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>ExamServlet</servlet-name>
        <servlet-class>com.servlet.ExamServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ExamServlet</servlet-name>
        <url-pattern>/exam</url-pattern>
    </servlet-mapping>
    
</web-app>

 

 

결과

 

 


 

 

📝 실습-ServletContext

 

TestServlet.java

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TestServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("TestServlet");
		// ServletConfig의 getInitParameter(name)
		String dir_path = getInitParameter("dir_path");
		String email = getInitParameter("email");
		System.out.println(dir_path+"\t"+email);
		
		// ServletContext의 getInitParameter(name)
		ServletContext ctx = getServletContext();
		String userid = ctx.getInitParameter("userid");
		String passwd = ctx.getInitParameter("passwd");
		System.out.println(userid+"\t"+passwd);
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

ExamServlet.java

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ExamServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ExamServlet");
		// ServletConfig의 getInitParameter(name)
		// Config는 공유가 안되므로 null이 출력됨.
		String dir_path = getInitParameter("dir_path");
		String email = getInitParameter("email");
		System.out.println(dir_path+"\t"+email);
		
		// ServletContext의 getInitParameter(name)
		// Context는 공유가 가능하기 때문에 null이 안나오고 값이 잘 나온다.
		ServletContext ctx = getServletContext();
		String userid = ctx.getInitParameter("userid");
		String passwd = ctx.getInitParameter("passwd");
		System.out.println(userid+"\t"+passwd);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

web.html

<?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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">

		<context-param>
            <param-name>userid</param-name>
            <param-value>asdf</param-value>
        </context-param>
        <context-param>
            <param-name>passwd</param-name>
            <param-value>1234</param-value>
        </context-param>

     <servlet>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>com.servlet.TestServlet</servlet-class>
        <init-param>
            <param-name>dir_path</param-name>
            <param-value>c:\\temp</param-value>
        </init-param>
        <init-param>
            <param-name>email</param-name>
            <param-value>aaa@google.com</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>ExamServlet</servlet-name>
        <servlet-class>com.servlet.ExamServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ExamServlet</servlet-name>
        <url-pattern>/exam</url-pattern>
    </servlet-mapping>
    
</web-app>

 

 

결과

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함