728x90
디스패처 서블릿(DispatcherServlet)
- 서블릿 컨테이너 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 *프론트 컨트롤러
- DisparcherServlet은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 세부 컨트롤러를 getBean()으로 가져와 정해진 메소드를 실행시켜 작업 위임
*프론트 컨트롤러(Front Controller)
: 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러,
MVC 구조에서 함께 사용되는 디자인 패턴
DispatcherServlet 동작 방식
장점
- web.xml의 역할 축소
- 기존의 모든 서블릿의 URL 매핑을 web.xml에 등록했지만, dispatcherServlet이 해당 애플리케이션으로 들어오는 모든 요청을 핸들링, 공통 작업 처리
단점
- 이미지, HTML, CSS, JavaScript 등과 같은 정적 자원(Static Resources)에 대한 문제 발생
정적 자원 문제 해결 방안 2가지
1. 정적 자원에 대한 요청과 애플리케이션에 대한 요청 분리
- '/resources'와 '/apps' 같은 URL을 붙여 요청 분리, 하지만 모든 요청에 URL을 붙이는 한계와 지저분해지는 소스코드 문제 발생
2. MVC와 무관한 Resource URL 따로 매핑(dispatcherServlet 설정 파일에 작성)
- DispatcherServlet을 통해 들어온 요청을 처리하는데 만약 디스패처 서블릿이 해당 요청에 대한 컨트롤러가 찾을 수 없다면 2차적으로 위의 설정된 경로를 검색하여 해당 자원을 찾아내게 되는 것
<mvc:resources mapping="/resources/**" location="/resources/" />
- mapping="/resources/**" : http://localhost:8080/webapp/resources/image/photo1.jpg
- location="/resources/" :
출처 및 참고)
728x90
반응형