경제학도의 개발공간

[20180426] Spring MVC 본문

BackEnd/Spring

[20180426] Spring MVC

reallifeliver 2018. 4. 30. 11:57
반응형


기존 우리가 했던 프로젝트는 Model2 기반의 MVC 패턴으로 이루어졌다. 



  • Model : dto(vo) , dao , service
  • View : jsp (html,htm)
  • Controller : servlet (web 전용 java 파일, request, response 객체를 다룰 수 있다.)
    요청 -> FrontController 역할 > servlet (doGET(), doPOST()) 
    >판단(글쓰기 요청, 글목록 보기) > command(?cmd=list) , url(/list.do) 
    -> service(dto, dao) -> request (담기) -> view 지정 -> foward -> view 데이터
    -> 클라언트에게 전달
    
이제는 Spring MVC패턴을 기반으로 작업한다. 


Spring MVC

  • 작업전제조건 >> SpringFrameWork를 통해서 jar파일을 프로젝트에 추가해야 한다.

    DB작업도 수행하고 싶다면?

  • 설정 : web.xml (*.do) 
    Annotation : 
    @Webservlet("*.htm")
    public class Frontcontroller extends HttpServet{
    요청판단 (doGET() , doPOST()) : command(?cmd=list) , url(/list.do)

    >http://localhost:8090/kosta/list.htm >


  • console 기반
    ApplicationContext context = 
    new GenericXmlApplicationContext("classpath:AOP_Basic_Spring_03/ApplicationContext.xml");

    >> IOC 컨테이너 >> xml read >> Bean생성 >> injection








다음의 그림을 암기하자 







Spring MVC 요청 처리 순서
1. DispatcherServlet이 요청을 수신
2. DispatcherServlet은 Handler Mapping에 어느 컨트롤러를 사용할 것인지 문의
3. DispatcherServletdms 은 요청을 컨트롤러에게 전송하고 컨트롤러는 요청을 처리한 후 결과 리턴
4. ModelAndView 오브젝트에 수행결과가 포함되어 DispatcherServlet에 리턴
5. DispatcherServlet이 ModelAndView에 포함된 URL에 해당하는 View를 탐색하여 forward


지금까지는 하나의 DispatcherServlet으로 모든 요청을 담당하였다. 그러나 DispatcherServlet을 여러개 설정함으로써 각각 다른 요청을 수행하도록 할수 있다. 

이 경우,DispatcherServlet 마다 각각의 ApplicationContext(IOC)를 생성할 수 있다. 
이 때, 각각의 DispatcherServlet마다 공유되는 자원들은 RootContainer를 생성함으로써 공유하도록 할 수 있다. 

여러개의 DispatcherServlet를 설정한다는 것은 곧, 그 수 만큼의 xml을 만들어 관리한다는 것을 의미한다.


Root Container(ApplicationContext)
listener 를 통해서 web.xml 실행시 가면 먼저 실행
applicationContext.xml > IOC DI 구성 파일로 (공통빈 : 다른 IOC 컨테이너 참조하는 Bean 구성)










반응형

'BackEnd > Spring' 카테고리의 다른 글

[20180503]Mybatis WIth Spring  (1) 2018.05.03
[20180503]Mybatis  (0) 2018.05.03
[20180425]AOP(Aspect Oriented Programming)  (0) 2018.05.02
[20180501]HandlerInterceptor  (0) 2018.05.01
[20180424]Spring_Annotation  (0) 2018.04.30