Spring MVC

P·2021년 12월 6일
0

Spring MVC

스프링에는 MVC 패턴으로 Model, View, Controller가 있음
모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴

Model

  • Controller에서 받은 데이터를 저장하는 역할
  • DTO(Data Transfer Object), VO(Value Object), DAO(Data Access Object)등

View

  • Controller에서 전달 받은 Model 데이터 등을 이용하여 클라이언트에 표시
  • HTML, JSP등

Controller

  • 비즈니스 로직을 처리하는 영역
  • Model과 View를 연결시켜주는 역할

MVC 패턴에는 2가지 방식이 있음


MVC Model 1

  • Model 1에서는 JSP 내부에서 HTML작성 및 Java 코드 작성을 동시에 진행
  • 개발 속도는 빠르지만 유지보수 측면에서 어려움

MVC Model 2

  • Model 2에서는 JSP(View)와 Controller가 분리됨
  • Web Container 내부에서 Service, Controller, DAO, View가 분리됨으로써 확장성과 유지보수가 용이해진다

Spring MVC 구조

Spring MVC의 구조에는 DispatcherServlet, View Resolver, Interceptor, Handler, View 등으로 구성되어 있음


DispatcherServlet

Front Controller, HTTP로 들어오는 모든 요청을 모두 받아 적절한 Controller로 Dispatch해주는 컨트롤러

  • 기존 Servlet이 요청 url당 각각의 servlet을 생성하고 그에 맞는 Controller로 전달하는 코드를 따로 작성, web.xml 파일에 URL 매핑을 모두 해주어야 했음
  • DispatcherServlet이 모든 요청을 받아 적절한 컨트롤러로 Dispatch하게 됨
  • web.xml에 일일히 등록하는 작업을 하지 않아도 됨

DispatcherServlet을 등록하기 위한 설정

web.xml

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>
  • DispatcherServlet Class의 전체 경로 등록
  • 하위의 servlet-name과 상위 servlet-name은 동일하게 설정
  • url-pattern에는 모든 요청에 대한 응답을 받기 위해 root폴더로 설정(원하는 디렉터리로 변경가능)
  • url-pattern을 / 대신 /* 설정 하면 -servlet.xml 매핑 정보를 읽어와서 dispatch 하기 때문에 dispatcher-servlet.xml 생성

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       			   http://www.springframework.org/schema/beans/spring-beans.xsd
       			   http://www.springframework.org/schema/context
       			   http://www.springframework.org/schema/context/spring-context.xsd">
  <bean id="/index" class="com.test.TestController"/>
  <bean id= "viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/views"/>
    <property name="suffix" value=".jsp"/>
  </bean>
</beans>
  • dispatcher-servlet.xml 파일은 인터셉터, 컨트롤러와 같은 웹 패키지에 해당하는 클래스들의 설정을 지정할 수 있는 파일
  • 컨트롤러 패키지 지정, URL 매핑이 필요함
  • prefix는 jsp, html 파일의 경로
  • suffix는 확장자, ~.jsp를 자동으로 찾을 수 있음
profile
개인 정리 공간

0개의 댓글

관련 채용 정보