📌 javax.servlet.ServletConfig
- 서블릿 계층구조에서 본 것처럼 서블릿에 1:1 대응됨 ( 서블릿당 하나씩 생성 )
- 다른 서블릿에서는 사용 불가
- 기능?
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
- web application ( 논리적인 명: 컨텍스트명 ) 당 한개만 생성
- 모든 서블릿에서 사용 가능
- 기능?
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>
결과
'Programming Language > SERVLET' 카테고리의 다른 글
서블릿 (servlet) - Filter API 활용 (0) | 2023.08.10 |
---|---|
서블릿 (servlet) - Scope (0) | 2023.08.10 |
서블릿 (servlet) - 서블릿의 핵심 기능 (1) | 2023.08.09 |
서블릿 (servlet) - 서블릿 lifecycle (0) | 2023.08.09 |
서블릿 (servlet) - 특징과 구현방법 (0) | 2023.08.09 |