가희의자기개발블로그

스프링 MVC 본문

백엔드/Spring

스프링 MVC

가희gahui 2020. 7. 16. 15:40
반응형

스프링 MVC

 

스프링 MVC도 컨트롤러를 사용하여 클라이언트의 요청을 처리한다

스프링에서 DispatcherServlet MVC에서 C(Control) 부분을 처리한다.

개발자가 처리할 부분은 클라이언트의 요청을 처리할 컨트롤러와 응답화면을 전송할 JSPVelocity 템플릿 등 뷰 코드이다

DispatcherServlet, HandlerMapping, ViewResolver등은 스프링이 기본적으로 제공하는 구현 클래스를 사용한다.

 

스프링 MVC의 구성 요소

1. DispatcherServlet

클라이언트의 요청을 전달 받는다

컨트롤러에게 클라이언트의 요청을 전달하고 Controller가 리턴한 결과값을 View에 전달하여 응답을 생성하도록 한다.

 

2. HandlerMapping

클라이언트의 요청 URL을 어떤 Controller가 처리할지를 결정한다

 

3. Controller

클라이언트의 요청을 처리한 뒤 결과를 DispatcherServlet에 알려준다

 

4. ModelAndView

컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.

 

5. ViewResolver

컨트롤러의 처리 결과를 생성할 뷰를 결정한다.

 

6. View

컨트롤러의 처리 결과 화면을 생성한다.

JSPVelocity 템플릿 파일등을 뷰로 사용한다.

 

 

 

위 그림에서 보면 DispatcherServlet이 Control를 한다. 이건 스프링이 자체적으로 제공을 하고 있기 때문에 따로 만들어 줄 필요가 없다. Controller는 자바파일의 역할을 한다. 즉, Model의 역할을 한다. 이전에 공부했을때 Servlet은 properties를 참고해 어떤 자바파일과 연결될지 알았다. 하지만 Spring은  HandlerMapping를 두어서 *.properties역할을 해주기 때문에 .properties를 따로 만들어 주지 않아도 된다. 

그렇기 때문에 우리는 Controller(자바파일)만 만들면 된다. 

이 자바파일에서 우리는 항상 request.setAttribute()으로 jsp파일을 넘겨주었다. 이제 Spring에서는 ModelAndView 객체(이 메소드 말고도 jsp를 넘겨줄 수 있는 다른 메서드들이 존재하지만, 주로 이 객체를 사용한다.)에 담아서 보내줘야 한다.  

View를 뿌려줄때, 지금까지 우리는 jsp로만 뿌려줬다. 하지만 Spring에서는 우리가 원하는 것 html, xml,jsp 등등 ViewResolver의 도움으로 원하는 것을 뿌려줄 수 있다. 

 

다시 정리하자면,,

Controller - Model

DispatcherServlet - Control

View - view

 

이제는 command.properties를 안써준다 Spring에서 다 연결해 주기 때문

 

그러면 어떻게 알고 연결해 줄까?

 

@Controller

class AAA{

 

}

class BBB{

}

가 있을 때 이 두 클래스가 연결 되고 싶으면 @Controller라는 써주면 @Controller가  적혀 있는 파일만을 비교 한다. @Controller는 또한 @Component를 지원해 주기 때문에 더이상 안써줘도 된다! 

반응형

'백엔드 > Spring' 카테고리의 다른 글

스프링과 JDBC  (0) 2020.07.15
스프링 AOP -관점지향 프로그램  (0) 2020.07.14
DI(Dependency Injection)  (0) 2020.07.10
eclipse -STS설치후 안켜지는 오류  (0) 2020.07.08
Spring Framework  (0) 2020.07.08
Comments