서블릿은 웹에서 클라이언트로부터 요청받아서 실행되는 자바 프로그램으로서, 주로 서비스 처리를 위한 데이터 준비 작업과 메소드 호출 역할을 한다.
서버에서 서블릿 실행에 관환 정보를 설정할 때는 web.xml의 <servlet>
태그로 설정한다.
web.xml 파일은 서버가 시작할 때 웹서버가 사용하는 환경설정 파일이다. 서블릿 또한 웹 애플리케이션 서비스를 실행하기 위해 존재하는 파일이므로 web.xml에 정의한다.
스프링 MVC 에서는 모든 요청이 반드시 DispatcherServlet의 존재를 통해서 실행되게 된다.
모든 요청이 반드시 하나의 객체(DispatcherServlet)를 지나서 처리되기 때문에 모든 공통적인 처리를 프론트 컨트롤러에서 처리할 수 있게 된다.
출처
위 그림처럼 DispatcherServlet은 FrontController 로써 역할을 하여 요청이 처음으로 처리되어 각 세부 컨트롤러(@Controller) 로 처리하게 한다.
DispatcherServlet 으로 사용하기 위한 "servlet-context.xml"을 생성한 후에
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-context.xml</param-value>
</init-param>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
web.xml에 위 내용대로 코드를 수정한다.
각 태그들의 내용의 설명을 하면
<servlet>
:<servlet-name>
과<servlet-class>
가 나와야한다. 그렇지 않으면 web.xml 오류가 발생하고 해당 웹 애플리케이션은 웹 서버에 서비스 준비가 완료되지 않아서 클라이언트에 서비스되지 않는다.<servlet-name>
:<servlet>
태그를 사용할 때 반드시 설정해야 하는 태그로서 서블릿의 이름을 지정한다<servlet-class>
:<servlet-class>
또한 <servlet>
태그 사용 시 반드시 설정해야 하며, 클래스 이름을 패키지명과 함께 대소문자를 구분하여 정확하게 입력해야 한다.<init-param>
:<servlet>
의 하위 태그로서 필요할 때 선택해서 사용할 수 있다.<param-anme>
과 <param-value>
태그로 구성해야 한다.<param-name>
:<param-name>
에 지정한 값을 이용하여 변수의 값을 추출한다. 이때 변수의 이름은 대소문자,철자를 구분하여 <param-name>
에서 정확히 일치하는 변수의 이름을 찾아서 값을 추출한다.<param-value>
:<load-on-startup>
:<load-on-startup>
태그의 값으로 우선순위를 지정한다.<servlet-mapping>
:
프로젝트를 실행하여 DispatcherServlet 클래스 형태인 appServlet이 초기화 되었다는 메시지가 출력되면 정상 작동 중이다.