728x90

 

* web.xml

1. web.xmlDispathcerServlet 설정을 통해 스프링 설정 파일을 지정합니다.

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. 스프링 MVCJSP, 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로 받기

방법2 받는 방법

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 파라미터를 추가해서 설정해주면 된다

 

 

 

 

 

 

728x90

+ Recent posts