4. 01
Web Application Framework
Web Application Framework란?
Dynamic한 Website, Web application, Web service등을 구현하기 위한 Software Framework
Static과 Dynamic Library와 Framework의
Webpage? 차이점?
5. 01
Web Application Framework
동적인 WebPage를 만들기 위한 노력
- 초창기의 CGI 방식
6. 01
Web 개발방식의 진화
동적인 WebPage를 만들기 위한 노력
Model 1 JSP
1 request
4 response JSP
Browser
2
3 Data
JavaBean
7. 01
Web 개발방식의 진화
동적인 WebPage를 만들기 위한 노력
Model 2 MVC
request
Controller
Browser
response
View Model Data
8. 01
Push 방식과 Pull 방식
Push 방식
• Controller에서 데이터를 처리하고 결과값을 View 영역으로 “Push” 함
• Struts, Django, Ruby on Rails, Spring MVC 등
Pull 방식
• View에서 필요한 데이터들을 각 Controller에서 “Pull” 해 옴
• Play, Lift, Tapestry, Wicket 등
9. 01
Spring MVC의 특징 정리
Model 2 방식을 따르는 MVC 구조
Front Controller Pattern
• DispatcherServlet이 Front Controller 역할
Push-based 방식
Request-based
12. 02
Spring MVC 의 request 처리과정
Request 들어옴 Request 준비과정 Request 처리
HandlerExecutionChain
결정
HandlerExecutionChain Request Processing
실행 종료
에러 발생? View 그리기
Error 처리
13. 02
Spring MVC 를 이용한 개발과정
1. DispatcherServlet 을 Web.xml에 설정
2. 요청 URL 과 Controller 갂의 Mapping방식을 결정
3. Controller의 처리 결과를 어떤 View로 보여줄지를 결정하는 ViewResolver 설정
4. Controller 작성
5. View 영역 코드 작성
15. 03
DispatcherServlet 설정 추가
Web.xml에 다음 설정 추가
<?xml version="1.0" ?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
16. 03
DispatcherServlet 설정 추가
기본적으로 spring 설정 파일은 WEB-INF/DISPATCHERNAME-servlet.xml
Web.xml에 다음 설정 추가하여 다른 Config 파일 사용 가능
- 여러 파일 사용 가능
- 동일한 이름의 빈을 지정할 경우 뒤쪽 설정이 우선
<servlet>
<servlet-name>multipleConfig</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/mvc1.xml,
/WEB-INF/mvc2.xml
</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
17. 03
Mapping 방식 설정
대표적인 Mapping 방법
1. BeanNameUrlHandlerMapping
- 빈의 name 속성을 url 과 비교해서 매핑. ANT 패턴 사용 가능. 디폴트 전략.
2. ControllerBeanNameUrlHandlerMapping
- 빈의 아이디 또는 빈 이름을 이용해서 매핑.
3. SimpleUrlHandlerMapping
- URL과 컨트롤러 매핑 정보를 각 빈으로 분산하지 않고 SimpleUrlHandelrMapping의 프로퍼티로 관리
4. ControllerClassNameHandlerMapping
- 빈의 클래스 이름을 사용하여 매핑
5. DefaultAnnotationHandlerMapping
- @requestMapping 이라는 Annotation을 컨트롤러 클래스나 메소드에 직접 부여하고 이를 이용해 매핑하는 전략
Xml의 경우 id에 들어갈 수 있는 문자열 제약이 있어서 빡치는 경우가 있음
19. 03
Mapping 의 몇가지 중요한 공통 property
1. interceptors
- Handler Mapping 중갂에 사용할 interceptor
2. defaultHandler
- 매칭되는 핸들러를 찾지 못할때 사용하는 기본 핸들러
3. order
- 다수의 HandlerMapping을 사용할 경우 HandlerMapping 갂의 우선순의
인터셉터?
DispatcherServlet이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참
조하여 가공할 수 있는 일종의 중갂 필터
핸들러 실행 체인(HandlerExecutionChain)에 의해 인터셉터들이 순
차적으로 호출 후 컨트롤러 실행
20. 03
ViewResolver 설정
핸들러 매핑이 URL로부터 컨트롤러를 찾아오는 것처럼 뷰 이름으로부터 사용할 뷰 오브젝트를
결정한다
1. InternalResourceViewResolver
- JSP를 사용하여 View을 생성. 디폴트 전략. Prefix나 surfix property를 통해 뷰 이름를 조절 가능
2. VelocityViewResolver
- Velocity를 사용하여 View를 출력할때 사용
- VeloctyConfigurer 설정 필요
이 외에도 FreeMarker, ResourceBundle, XmlView, BeanName 등 여러가지 ViewResolver
가 있음여