* web.xml
1. web.xml에 DispathcerServlet 설정을 통해 스프링 설정 파일을 지정합니다.
2. *.do로 들어오는 클라이언트의 요청을 DispatcherServlet이 처리하도록 했다
3. DispatcherServlet은 /WEB-INF/서블릿이름-servlet.xml 파일로부터 스프링 설정 정보를 읽어온다.
* HelloController.java
1. 컨트롤러를 구현하려면 @Controller 어노테이션을 클래스에 적용한다.
2. @RequestMapping 어노테이션을 이용해서 클라이언트의 요청을 처리할 메소드를 지정한다.
3. ModelAndView.setViewName()메소드를 이용해서 컨트롤러의 처리 결과를 보여줄 뷰 이름을 지정한다.(안쓰고도 가능하다)
* dispatcher-servlet.xml
1. DispatcherServlet은 스프링 컨테이너에서 컨트롤러 객체를 검색하기 때문에 스프링 설정파일에 컨트롤러를 빈으로 등록해주어야 한다
2. DispatcherServlet은 뷰이름과 매칭되는 뷰 구현체를 찾기 위해 ViewResolver를 사용한다.
3. 스프링 MVC는 JSP, Velocity, FreeMarker등의 뷰 구현 기술과의 연동을 지원하는데, JSP를 뷰 기술로 사용할 경우 InternalResourceViewResolver 구현체를 빈으로 등록해주면 된다.
4. ViewResolver가 /view/뷰이름.jsp를 뷰JSP로 사용한다는 의미이다
[SUM 예제]
Project : chapter06_1
Package : com.controller
Class : SumController.java
Package : com.bean
Class : SumDTO.java
Foler : sum
File : input.jsp
result.jsp
스프링 설정 파일
/WEB-INF/dispatcher-servlet.xml → /WEB-INF/spring/appServlet/mvc-context.xml
[실행결과]
http://localhost:8080/chapter06_1/input.do
input.jsp result.jsp
X : ㅁ 25 + 36 = xx
Y : ㅁ
계산 |
http://localhost:8080/chapter06_1/result.do
<input>
- 이렇게 써두면 스프링이 알아서 jsp 파일로 찾아간다.
- 핸들러 매핑은 여기까지 도착까지 도와주는 것
- 스프링은 기존MVC에서 command.properties이랑 control.servlet이 빠지는 구조?!=> 어노테이션 처리
<result>
[방법1 - mav이용x]
- 포워딩 방식이라서 param 으로 다 가능!
cf) 포워딩방식 => 하나의 request로 돌아가고 있다 cf) 이렇게하면 jsp가 무거워지니까 타임리프로 request response를 안쓰는 것! => 일반 html처럼 뿌리기만 해서 가볍다! |
[방법2 - mav 이용]
[결과화면]
+ 추가기능
+ 추가 변형 => Map으로 받기 / 스프링에 많은 기능이 있기때문에 자기가 하기 나름?! 이다
+ 추가변형 => Session
+ 추가변형 - DTO로 받기
cf) ![]() |
[성적문제]
Project : chapter06_1
Package : com.controller
Class : SungJukController.java
Package : com.bean
Class : SungJukDTO.java
Field : name, kor, eng, math, tot, avg
Foler : sungJuk
File : input.jsp
result.jsp
스프링 설정 파일
/WEB-INF/spring/appServlet/mvc-context.xml
[실행결과]
namespace(앞예제에서 이미 input.do를 사용해서)(구분자)
http://localhost:8080/chapter06_1/sungJuk/input.do
input.jsp => result.jsp
이름 : ㅁ post *** xxx 성적 ***
국어 : ㅁ 총점 : xxx
영어 : ㅁ 평균 : xx.xxx
수학 : ㅁ
계산 |
namespace
http://localhost:8080/chapter06_1/sungJuk/result.do
=> 이제 do 안쓰고 /나오면 컨트롤러 실행
<mvc:annotation-driven/>
Spring Web MVC를 하기 위해 설정해야 하는 값들을 자동으로 추가해준다.
Spring MVC가 @Controller에 요청을 보내기 위해 필요한 HandlerMapping과 HandlerAdapter를 bean으로 등록한다
HandlerMapping : HTTP 요청정보를 이용해서 컨트롤러를 찾아주는 기능
HandlerAdapter : HandlerMapping을 통해 찾은 컨트롤러를 직접 실행하는 기능을 수행
bean을 생성하기 위해 xml 파일에 context:component-scan을 명시하면 이 태그를 포함하지 않아도 MVC 애플리케이션은 작동한다
- @ResponseBody가 없으면 jsp파일을 찾아 가버린다
<WAC (Web Application Context) 등록>
1. ContextLoaderListener가 생성하는 Root WAC
- 웹 환경과 독립적인(상관 없는) 빈 등록
- 디폴트 설정 파일 /WEB-INF/applicationContext.xml 으로 설정 된다
- 서비스계층과 데이터 액세스 계층을 포함해서 웹 환경과 직접 관련이 없는 모든 빈들을 여기에 등록 한다
→ 만약에 사용할 이름이 다르거나 설정파일이 여러 개인 경우
contextConfigLocation 파라미터를 추가해서 설정해주면 된다
<!-- 웹과 독립된(상관없는) WAC => ContextLoaderListener 얘가 다 처리
/WEB-INF/applicationContext.xml => /WEB-INF/spring/root-context.xml
기껏 디폴트 이걸로 잡고 변경한다 => 보안때문에 감추려고
-->
2. DispatcherServlet이 생성하는 WAC
- DispatcherServlet이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록
- 디폴트 설정 파일 /WEB-INF/서블릿이름-servlet.xml으로 설정된다
→ 만약에 사용할 이름이 다르거나 설정파일이 여러 개인 경우
contextConfigLocation 파라미터를 추가해서 설정해주면 된다
'Spring' 카테고리의 다른 글
211124(수) Spring 파일 업로드 (0) | 2021.11.24 |
---|---|
211118(목) Spring 10일차 (0) | 2021.11.18 |
211116(화) Spring 8일차 - MVC 개념 (0) | 2021.11.16 |
Spring - @Autowired (0) | 2021.11.15 |
211115(월) Spring 7일차 - JDBC(수정,삭제)-컴포넌트,컨피그 / MyBatis 연동 (0) | 2021.11.15 |