- 전부다 포워딩 => 나눠본거지만 한 덩어리다!!
- 같은 색 같은 기능
- HandlerMapping 이 이렇게 url-java를 연결하는 역할을 한다 이런부분은 이제 없어진다!!
<스프링 MVC>
스프링 MVC도 컨트롤러를 사용하여 클라이언트의 요청을 처리한다
스프링에서 DispatcherServlet 이 MVC에서 C(Control) 부분을 처리한다.
개발자가 처리할 부분은 클라이언트의 요청을 처리할 컨트롤러와 응답화면을 전송할 JSP나 Velocity 템플릿 등 뷰 코드이다
DispatcherServlet, HandlerMapping, ViewResolver등은 스프링이 기본적으로 제공하는 구현 클래스를 사용한다.
스프링 MVC의 구성 요소
1. DispatcherServlet =>C
클라이언트의 요청을 전달 받는다
컨트롤러에게 클라이언트의 요청을 전달하고 Controller가 리턴한 결과값을 View에 전달하여 응답을 생성하도록 한다.
2. HandlerMapping
클라이언트의 요청 URL을 어떤 Controller가 처리할지를 결정한다
3. Controller => M Model! JAVA 부분을 이야기 하는 것!! 이름 헷갈리기 주의~!!!
클라이언트의 요청을 처리한 뒤 결과를 DispatcherServlet에 알려준다
4. ModelAndView
컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
5. ViewResolver
컨트롤러의 처리 결과를 생성할 뷰를 결정한다.
6. View => 스타트업은 타임리프를 쓸것이다?!
컨트롤러의 처리 결과 화면을 생성한다.
JSP나 Velocity 템플릿 파일등을 뷰로 사용한다.
STS의 Spring MVC Project 로 생성하면 좋지만 이걸로하면 왜있는지를 모르니까 처음에는
스프링이아닌 일반 웹인 Dynamic으로 만들어서 다 쳐보는걸로 실습!!
[실습]
Project : chapter06 (Dynamic Web Project) - *.jar
project명에서 우클릭 - Spring - Add Spring Project Nature
Project : chapter06_SpringWebMaven (Dynamic Web Project) - pom.xml
project명에서 우클릭 - Spring - Add Spring Project Nature
project명에서 우클릭 - Configure - Convert to Maven Project
project명에서 우클릭 - Maven - Update Project...
Project : chapter06_SpringMVC (Spring MVC Project)
① Spring MVC Project requires a download of 16608 bytes - Yes
② 3단계로 package를 작성해야한다
Package를 3단계로 설정할 때 마지막을 Project명(chapter06_SpringMVC)과 똑같이 잡아야 URL의 경로를 /chapter06_SpringMVC로 인식한다
만약 Project명이 chapter06_SpringMVC이고 Package명은 com.example.spring으로 설정하면 URL 경로가 /spring로 잡힌다
http://localhost:8080/chapter06_SpringMVC/main/index.do - error
http://localhost:8080 /main/index.do 하면 결과가 나온다
그러면 경로를 바꾸어야 하는데
Tomcat에서 더블클릭 - Modules(탭) - Path : /spring를 /chapter06_SpringMVC로 변경하면 된다
Please specify the top-level package e.g. com.mycompany.myapp* :
com.example.chapter06_SpringMVC
➂ JDK와 Spring 버전을 변경한다
- JDK는 기본이 1.6 으로 생성된다.
- 스프링은 기본이 3.1.1 으로 생성된다
- 자바버전맞추기
- jar 넣기
- common logging / jstl / standard / lombok 까지 총 26개 넣기! + ojdbc / mybatis
<메이븐프로젝트에는 디펜던시 복붙>
+ jstl(스탠다드는 이거있으면 생략가능)
- web.xml
- 스프링 설정 파일
: 웹이아닐땐 appli... 웹일땐 서블릿에 등록한 이름으로!!!
- 서블릿 요청
- 핸들러매핑이 dispatcherservlet 이랑 @controller로 지정된 클래스를 찾아서 연결해준다!
- modelandview 는 데이터도 싣고 뷰에도 연결해준다 => request보다 더많은일을 한다!
- @ResponseBody 정말 자주쓰인다 =>단수 문자열로 인식하는 것! 파일명을 인식하지말고 단순한 문자열로 알아들어라!!!
-
- cf) 파일명으로 인식해버리는 스프링의 특징
리턴 타입이 String 이면 단순 문자열로 인식하는 것이 아니라 파일명으로 인식한다.
=> @ResponseBody를 사용하면 단순 문자열로 인식한다.
프로젝트 생성방법
1. 다이나믹 웹
2. 스프링으로변환
3. lib 넣기
4. web.xml
5. context 설정파일
web.xml =>
'Spring' 카테고리의 다른 글
211118(목) Spring 10일차 (0) | 2021.11.18 |
---|---|
211117(수) Spring 9일차 - MVC(SUM예제(input, result) / SungJuk예제) / WAC (Web Application Context) 등록 (0) | 2021.11.17 |
Spring - @Autowired (0) | 2021.11.15 |
211115(월) Spring 7일차 - JDBC(수정,삭제)-컴포넌트,컨피그 / MyBatis 연동 (0) | 2021.11.15 |
211112(금) Spring 6일차 - AOP(proxy) / JDBC (0) | 2021.11.12 |