현재 대충 내가 생각하는 요청과 응답의 흐름이다.
요청이 필터를 거쳐 디스패처서블릿에 간다.
디스패처서블릿이 요청을 수행할 컨트롤러로 보낸다.
컨트롤러가 요청을 수행할 서비스로 보낸다.
서비스가 DAO 형태로 모델에 보낸다?...
모델이 DB에 가서 DAO를 풍성하게 채워주고
다시 서비스로?...
서비스가 다시 디스패처 서블릿으로?..
디스패처서블릿이 뷰로 ?...
공부 후 다시 정리했을 때는 어떨지 한번 같이 살펴보자구요
1. web.xml 에서 필터를 찾았다.
<!-- 한글 처리를 위해 encoding filter를 등록한다. -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
아니 이럴수가,,, web.xml에서 필터 태그를 확인해버리고 말았다.
web.xml을 보니
크게 web-app태그 안에
Listener란?
1. 프로그래밍에서 Listener란 특정 이벤트가 발생하기를 기다리다가 실행되는 객체
2. 이벤트란 특정한 사건 발생 ex) 버튼클릭,키보드입력,컨테이너빌드완료,웹어플리케이션시작,HTTP요청수신 등
3. 서블릿 컨테이너에서 발생하는 이벤트 감지
4. web.xml파일에 \ 태그를 이용하여 사용 가능
5. 리스너가 여러 개일 경우 보통 선언된 순서대로 실행되지만 아닌 경우가 있으므로 각각의 리스너는 독립적으로 동작할 수 있도록 설계하는 것이 좋음
그 다음으로 Filter는?
1. 요청과 응답 데이터를 필터링하여 제어, 변경하는 역할
2. 사용자의 요청이 Servlet에 전달되어지기전에 Filter를 거침
3. Servlet으로부터 응답이 사용자에게 전달되어지기 전에 Filter를 거침
4. FilterChain을 통해 연쇄적으로 동작 가능
갑분 Interceptor가 나왔다. 이녀석은 뭐지
HandlerInterceptor를 구현한 것이라 한다.
요청(request)를 처리하는 과정에서 요청을 가로채서 처리하고
접근제어(Auth), 로그(Log)등 비즈니스 로직과 구분되는 반복적이고 부수적인 로직을 처리한다.
총 3가지가 있는데 이렇게 있다.
Interceptor 등록은 Servlet-context.xml에 한다.



아하 Spring MVC는 DispatcherServlet 이라는 큰 틀에 Servlet WebApplicationContext와 Root WebApplicationContext가 안에 들어있고 Servlet WebApplicationContext 안에는 containing controllers, view resolvers, other web-related beans가 있구나
그리고 Root WebApplicationContext 안에는 containg middle-tier services, datasources 등 서비스와 레포지토리들이 있구나
DispatcherServlet 등록하고
servlet-context.xml / root-context.xml 파일을 생성하고