SerlvetContext 설정 파일
/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>webtest-serlvetconfig-servletcontext</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.kosta.DispatcherServlet</servlet-class>
<!-- init-param 태그 추가
: DispatcherSerlvet의 SerlvetConfig 객체에 정보 전달-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/DispatcherServlet</url-pattern>
</servlet-mapping>
<context-param>
<param-name>servletContextTest</param-name>
<param-value>웹어플리케이션 전체공유정보</param-value>
</context-param>
</web-app>
/DispatcherServlet.java <<Servlet>>
package org.kosta;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DispatcherServlet() {
super();
System.out.println("DispatcherSerlvet 생성자 실행");
}
// 1. init()시 SerlvetConfig 정보 전달
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("init()");
}
// 2. service - doGet() or doPost()
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Serlvet에서 html을 작성하기 어려워서, JSP(View)가 개발되었다.
//Serlvet이든, JSP이든, 내부적으로는 I/O(입출력)이 실행된다.
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h3>");
String springConfig = getServletConfig().getInitParameter("contextConfigLocation");
if (springConfig != null)
out.println("스프링 설정 정보: " + springConfig);
else
out.println("스프링 설정 정보: " + getServletConfig().getServletName() + "-servlet.xml");
out.println("<br>");
out.println("서블릿 이름: " + getServletConfig().getServletName()+"-servlet.xml");
out.println("</h3>");
out.println("</body>");
out.println("</html>");
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
// 3. destroy()
public void destroy() {
super.destroy();
System.out.println("destroy()");
}
}
web.xml에서
1. <serlvet-name>에 springmvc를 할당해주면,
DispatcherServlet.java 실행 시, 서블릿 이름(getServletConfig().getServletName())이 springmvc로 반환된다.
(DispatcherServlet.java에서 이름 반환할 때 끝에 +"-serlvet.xml"을 반환한다.
이는 SpringMVC에서 FrontController의 이름을 찾는 방식이다.)
2. <serlvet>태그 내 <init-param>을 추가하여, serlvetConfig에 정보를 할당해준다.
param-name : contextConfigLocation
param-value : /WEB-INF/spring-*.xml
DispatcherServlet.java 실행 시, <init-param>을 추가한 경우는 /WEB-INF/spring-*.xml 로 설정정보를 찾는다.
없는 경우는 1번과 같이 <serlvet-name>인 springmvc-serlvet.xml을 찾는다.
3. <context-param> 태그 추가하여 SerlvetContext 정보 할당
param-name : serlvetContextTest
param-value : 웹 어플리케이션 전체 공유 정보
serlvetConfig가 있는 객체에만 SerlvetContext정보가 공유된다.
/test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ServletConfig와 ServletContext Test
<br>
<%
String contextInfo = application.getInitParameter("servletContextTest");
%>
<br>
<!-- 같은 웹 어플리케이션 내에 있는 jsp와 servlet에서는
web.xml에서 지정한 servletContext정보를 공유할 수 있다. -->
web ServletContext -> <%=contextInfo%><br>
<!-- application(어플리케이션)이 아닌,
DispatcherSerlvet의 ServletConfig의 초기파라미터는
다른 서블릿과 JSP에서는 사용이 불가능 하다. -->
Dispatcher Servletconfig -> <%=getServletConfig().getInitParameter("contextConfigLocation")%>
</body>
</html>
- 같은 웹 어플리케이션 내에 있는 jsp와 servlet에서는 web.xml에서 지정한 servletContext정보를 공유할 수 있다.
: SerlvetContext는 웹 어플리케이션 환경 정보로서 모든 서블릿과 JSP가 접근 가능하다. - application(어플리케이션)이 아닌,
DispatcherSerlvet의 ServletConfig의 초기파라미터는 다른 서블릿과 JSP에서는 사용이 불가능 하다.
'Java Web Programming > 6. Spring | MyBatis' 카테고리의 다른 글
[SpringMVC/MyBatis] Junit을 이용한 Spring MVC Template - 단위테스트 (0) | 2020.11.11 |
---|---|
[SpringMVC/MyBatis] SpringMVC Template Project 환경설정 (0) | 2020.11.11 |
[SpringMVC/MyBatis] Spring 설정 파일을 분리하여 적용해보기 + DB Sequence (0) | 2020.11.10 |
[SpringMVC/MyBatis] SpringMVC + 마이바티스 연동 연습 2 (JSTL) (0) | 2020.11.10 |
[SpringMVC/MyBatis] SpringMVC + 마이바티스 연동 연습 1 (0) | 2020.11.09 |