[Spring] 스프링 MVC모델 예제 - Controller와 View연결

2021. 1. 20. 21:07dev

DispatcherServlet 클래스의 역할

Spring MVC 모델을 검색하면 위와 같은 이미지를 볼 수 있는데, 그림에서 파란색 부분이 스프링에서 제공해주는 것들이고 개발자가 나머지 부분만 구현해주면 된다.

스프링 MVC 모델은 MVC 모델2에 해당하며 DispatcherServlet라는 서블릿 하나가 클라이언트로부터 들어오는 모든 요청을 받는다. DispatcherServlet가 있기 전에는 사용자가 호출하는 url을 일일이 해당하는 모든 서블릿과 매핑시키는 작업이 필요했지만, DispatcherServlet을 사용하면 해당 요청을 Handler Adapter를 통해 알맞은 컨트롤러로 위임하고, 컨트롤러들은 클라이언트에게 보낼 뷰를 선택해서 최종 결과를 생성하는 작업을 하게된다. 

 

Spring MVC기반 웹 어플리케이션 구현하기 

Controller를 등록하고, 브라우저 상에서 JSP를 실행해보는 간단한 예제이다. 
프로젝트는 두가지를 생성하고 첫번째는 xml 사용, 두번째는 xml없이 java파일만으로 설정해서 실행시켜본다.

[방법1] xml로 스프링 설정하기

디렉토리 구조

1. spring MVC에 필요한 라이브러리 설치

먼저, Maven Project를 생성하고, pom.xml안에 필요한 라이브러리들을 작성해준다. 

필요한 라이브러리는 mvn repository 사이트에서 필요한 라이브러리들을 불러오면 된다. 

mvnrepository.com/ 

 

2. 클라이언트의 요청을 받는 DispatcherServlet을 web.xml에 설정

먼저, 애플리케이션 전체를 관리할 객체를 생성해주어야 한다. contextClass와 value값 모두 스프링 프레임워크에서 제공해주는 객체들이라고 생각하면 된다. 이제 웹 애플리케이션에서 동작하는 어떤 객체들이라도 이 name과 value에 접근해서 사용이 가능한 것이다. 

 

다음은 리스너와 DispatcherServlet을 정의한 부분이다. 

모든 클라이언트의 요청을 DispatcherServlet을 통해 받아내고, servlet element 안에 DispatcherServlet를정의해주면된다. servlet-mapping에 서블릿 name을 정의해주고, 그때의 이름이 servlet에서 정의한 servlet-name과 일치하도록 작성해주면 된다. url-pattern 으로 지정한 "/" 뒤에 모든 요청 url들이 오게될 것이고, 요청되면 servlet안에있는 servlet-class가 실행될 것이다. 이 서블릿 클래스 역시 스프링 프레임워크에서 제공해주는 클래스이다.

 

3. 클라이언트의 요청을 처리할 Controller 생성

hello()와 test()가 처리할 메서드이고 호출하는 방식에 따라 매핑 애노테이션을 다르게 지정해준다. 

 

4. Spring Bean으로 Controller 등록

resolver 객체들이 jsp파일을 매핑하도록 설정해준 모습이다. 

5. Browser 상에서 JSP 실행

 

[방법2] java파일에 스프링 설정하기

디렉토리 구조

1. web.xml 대신 java클래스에 스프링 설정

프로젝트 생성과 pom.xml설정, 컨트롤러 생성 방법은 위의 방법과 동일하고, web.xml을 대신할 java파일을 생성해주면 된다. 

web.xml을 사용하는대신 java 클래스로 설정하면 어떤 차이점이 있을까??

  • 스프링 설정 파일을 따로 관리할 필요가 없다
  • xml에 작성하는 것보다 명료하다. 어떤 것들이 빈으로 만들어지는지 파악하기 쉽다
  • 자바코드로 작성하기 때문에 IDE 기능을 사용할 수 있다 (자동완성 등)

2. 오버라이딩으로 컨트롤러 등록도 가능하다 

이제 컨트롤러가 jsp파일을 매핑하도록 해주면되는데, 클래스를 하나 생성해서 스프링의 prefix, suffix인자를 받아오도록 록 구현했다. [방법 1] 예제에서는 직접 bean을 등록해서 resolver.setPrefix와 resolver.setSuffix를 사용했는데 아래와 같은 방법도 있으니 알아두자 

3. Browser 상에서 JSP 실행

 

비즈니스 로직을 제외한 간단한 예제로 Spring MVC 흐름에 대해 이해해보았다.

다음엔 Mybatis 라이브러리를 추가해보고 JDBC 프로그램과 어떤 차이점이 있는지 공부해볼 예정!


전체 소스코드
https://github.com/jiyoung-dev/TIL/tree/master/Spring/MVCmodel