본문 바로가기

프로그래밍 기초/SPRING

[Spring] MVC 패턴과 SPRING이란? SPRING MVC 구조와 처리과정

MVC 패턴이란?

- MVC 패턴이란? ( Model : 데이터 처리 / View : 화면 담당 / Controller : 요청 처리, Model과 View를 연결하는 역할 )

: Model, View, Controller를 나눈 구조로 클라이언트로부터 요청이 들어오면 그 요청을 Controller가 받고 해당하는 Model을 호출한다. Model은 비즈니스 로직을 처리하여 요청한 값을 컨트롤러에 보내고 요청한 값을 받은 컨트롤러는 View로 전송하는 패턴을 말한다.

MVC 모델2 패턴의 장점은 개발자와 디자이너의 작업을 분리하여 작업을 가능하게 한다는 점이 있다.

                           또한 유지보수와 확장이 용이하다.

단점은 개발초기에 구조적 디자인을 위한 시간의 소요가 크고 난이도가 높다.

 

MVC모델 2의 단점을 보완하기 위하여 SPRING Framework가 등장했다.

 


Spring Framework란?

 framework란 아키텍처에 해당하는 골격코드로 뼈대역활을 한다.

개발자가 모든것을 만들어내는 것이 아니라 framework가 잡아놓은 뼈대에 살을 붙이는 작업을 한다.

때문에 장점은 구현시간이 빠르고 관리가 쉽다. 또한 검증된 아키텍처를 재사용하고 일관성을 유지할 수 있다.

 

Spring Framework는 오픈소스 프레임워크로 다음과 같은 특징이있다.

 

1. 경량의 프레임워크이다.

2. DI (Dependency Injection)패턴을 지원한다.

3. AOP(Aspect Oriented Programming)를 지원한다.

4. POJO(Plain Old Java Object)를 지원한다.

5. 트랜잭션 처리를 위한 일관된 방법을 제공한다.

6. JDBC, MyBastis,HIBENATE등과 같은 프레임워크를 연동지원한다

7. 자체적으로 MVC 프레임워크가 제공된다.


Spring mvc프레임워크의 구조

 

프로젝트를 뜯어보면 다음과 같은 형태를 띄고있다.

java coding의 밑줄이 잘못그어졌다. 화살표가  HomeController를 향한다고 생각하자 

web.xml은 Apache Tomcat WebServer에 대한 설정이고 

servlet-context.xml은  DispatcherServlet에 대한 설정이다.

참고로 webapp은 context path이다.


web.xml

 

1DispatcherServlet의 이름을 appServlet이라고 정의하고

2servlet-context.xml에서 DispatcherServlet서블릿의 행동을 명시한다.

3서블릿을 맵핑한다.(어떤 형태의 요청을 처리 할지 정한다.)

  이때 *.do 라고하면 서블릿이 .do로끝나는 모든 폴더를 처리하고 /라고하면 모든 요청을 처리한다.

 

 


 

HomeController

 

     1.@Controller 어노테이션  : MVC의 Controller가 될 수 있도록 한다.

                                         signupform.jsp와 signup.jsp에서 signup.jsp의 역활

     2.@RequestMapping 어노테이션을 해준다. : 어떤 요청을 처리할 지 지정해준다.

 

Homecontroller에서 리턴은 클라이언트에게 결과를 출력할 view의 이름을 리턴한다.

"home" 을 리턴해주면 "/WEB-INF/views/" + "home" + ".jsp" 문자열이 만들어지고

WEB-INF/views/home.jsp페이지로 forward 이동되어서 응답된다.

 

 

forward 이동 참고

https://dev-jejeb.tistory.com/13

forward 이동 참고

 

 

 

 

 

 

 


Spring mvc프레임워크의 처리과정

 

1. DispatcherServlet이 동작한다.

  주소창에 *.do로 끝나는 페이지가 요청되었기 때문에 동작하였다.

2. home.do 요청을 매핑한 컨트롤러를 찾아서 요청을 처리하고 view의 이름을 리턴한다.

   HomeController 에서 home.do요청을 처리하므로 HomeController가 동작한다.

3.2번의 이름을 가진 view로 포워드이동한다. 

4.클라이언트에게 응답한다.

 

 

 

참고이미지 출처 :http://naver.me/FKseaR0i

참고 이미지