본문 바로가기
Spring

230131 Spring MVC2 웹서비스

스프링 MVC2웹서비스


웹 프로그래밍을 구축하기 위한 설계 모델

클라이언트 요청-WAS(웹 어플리케이션 서버)-데이터베이스
model-데이터베이스와 DAO사이 주고받는 역할
VO와 DTO를 합친 것.

M-model
V-view
C-controller

spring은 MVC2방식만 지원.



스프링 MVC프레임워크 동작 구조
spring 아키텍쳐


DispatcherServlet은 모든걸 다 제어한다. 

  1. 브라우저(클라이언트)에서 요청이 들어오면 frontcontroller라 부르는 DispatcherServlet으로,
  2. HandlerMapping으로, url을 분석해서 다시 DispatcherServlet으로,
  3. DispatcherServlet에서 특정클래스를 실행하기 위해 HandlerAdapter로 분석한 url정보를 넘기고 HandlerAdapter는 받은 url로 특정 Controller와 연결,
  4. Controller(개발자가 만들 것)에는 Service, DAO가 존재,
  5. Controller에서는 model이라는 데이터정보, view라는 화면정보를 DispatcherServlet으로(HandlerAdapter를 거치고 간다.),
  6. DispatcherServlet은 정보들을 받아서 가야 될 화면을 결정하기 위해 ViewResolver에 view에 대한 정보를 넘김,
  7. ViewResolver는 view에 가야 할 최종 정보(완성된 view에 대한 정보, view를 거쳐 간다.)를 다시 DispatcherServlet으로 보냄,
  8. DispatcherServlet은 완벽한 데이터정보와 view에 대한 정보를 가지고 있음. DispatcherServlet은 forward방식으로 화면으로 넘김(브라우저에서 보여줌).

Spring에서 DispatcherServlet, HandlerMapping, HandlerAdapter, ViewResolver, View를 제공. 이건 기본 뼈대.
개발자는 Controller영역만 만들면 된다.


설정

 

web.xml

프로젝트의 전역 설정을 해주는 파일

서블릿(servlet)등록, 스프링이 던져주는 서블릿으로. 

 

서블릿 별칭, 서블릿명(패키지 이름을 포함한 전체 서블릿명), /맵핑명 설정.
/맵핑명은 예전엔 /.do를 했으나 요즘은 /or /

스프링설정파일(bean으로 설정할 .xml파일)을 매개변수로 받을 수 있음
<init-param>스프링 설정 파일</init-param>

 

param-name은 contextCofigLocation이 등록되어 있는데(반드시 이 이름)스프링 설정파일을 다른이름으로 여러개 생성하도록 해줌
param-value는 지정된 파일이 스프링 설정파일이 된다.

<param-value>이 안에는 여러개가 들어갈 수 있다.</param-value>

 


HandlerMapping, HandlerAdapter는 직접 건들지 않으면 <annotation-driven />이 알아서 설정해 준다.
스프링 어노테이션을 사용할 수 있게 해준다.


Spring Bean configuration file(.xml)

사용할 bean들을 선언해놓을 수 있음

 

<resources mapping="/resources/**" location="/resources/" />

는 정적파일의 경로 제공. Handler~를 거치지 않아도 되는 정적 파일들.


Css, script파일들은 굳이 컨트롤러 요청에 들어갈 필요 없다. resources폴더에 만들어지는 파일들을 해당 경로로 바로 맵핑되어 보여준다.
절대경로로 resources가 포함되어 있으면 Controller를 거치지 않는다!


<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<beans:property name="prefix" value="/WEB-INF/views/" />
	<beans:property name="suffix" value=".jsp" />
</beans:bean>

 

prefix, suffix는 View경로 합성기(ViewResolver).
prefix가 앞의 경로, suffix는 뒤의 경로. 중간경로는 개발자가 Controller에서 return시켜줌

==>즉, 완벽한 view에 대한 경로를 만들어 주는 것.


 

<context:component-scan base-package="com.myweb.xxxx" />

 

의 의미 : 스프링 컨테이너에게 자바패키지를 자동으로 스캔해서(bean으로 만들어야 하는 애들을) 객체(bean) 으로 생성하도록.
->어노테이션을 대체해줄수 있음, spring3버전 이상부터는 반드시 이걸 쓰도록 권고하고 있음.


Controller

view에대한 정보는 리턴.

@RequestMapping("/주소")
여기로 들어오는 주소를 HandlerMapping으로 부착시켜줄 어노테이션

컨트롤러에서 나온 return정보를 DispatcherServlet이 ViewResolver로 넘겨줘서 prefix,사이,suffix를 통해
컨트롤러에서 받은 정보를 사이에 넣어 완벽한 경로를 forward방법으로 화면에 날려줌.