상세 컨텐츠

본문 제목

DispatcherServlet

Spring/개념

by Chan.94 2021. 9. 23. 11:18

본문

반응형

Spring MVC는 다음과 같다.

Spring MVC

간략한 이해

1. Client의 요청

2. Controller Mapping

2. Contoller는 비지니스로직(Service, DAO)를 거쳐 ModelAndView를 돌려줌.

3. ViewResolver를 통해 View를 찾음.

4. Client에 정보 전달.

소스를 보면서 DispatcherServlet에 대해 알아보도록하자.


web.xml

WAS가 처음 구동될 때 web.xml을 읽어 웹 애플리케이션 설정을 구성한다.

web.xml에 DispatcherServlet을 등록해준다.

  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcher</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

DispatcherServlet의 설정파일 경로를 따로 설정해주지 않는다면 /WEB-INF/서블릿명-servlet.xml의 설정을 바라본다.

 

경로설정

  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/spring/dispatcher-context.xml</param-value>
  	</init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

default경로가 아닌 경로로 설정 할 수 있으며, 목적에 맞게 servlet설정파일을 분리 할 수도 있다.

여기까지 오면 'DispatcherServlet이 언제 메모리에 올라가게 될까'라는 의문이 생길 수 있다.

처음 Client로 부터 요청이 오게될때 메모리에 올라가게된다면 첫 요청은 느릴 수 있다.

<load-on-startup>1</load-on-startup>

해당 설정으로 WAS가 구동되면서 메모리에 올라가게 된다.

 


dispatcher-servlet.xml

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/view/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

ViewResolver의 prefix와 suffix 설정으로 간편하게 view를 찾을 수 있다.

 


Controller

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	
	ModelAndView mv = new ModelAndView("index");
    //ModelAndView mv = new ModelAndView("/WEB-INF/view/index.jsp");
	mv.addObject("data", "spring-framework");
	return mv;
}

ViewResolver의 설정으로 인해 ModelAndView의 경로가 간결해 진 것을 확인할 수 있다.

반응형

'Spring > 개념' 카테고리의 다른 글

Spring AOP (Proxy)  (0) 2021.10.08
@Autowired 인터페이스 사용이유  (0) 2021.10.07
@Autowired 사용법  (0) 2021.10.06
[Spring] component-scan 사용이유  (0) 2021.10.05
DI(의존성 주입)  (0) 2021.10.03

관련글 더보기

댓글 영역

>