Spring 10 MVC(일반)

Kang.__.Mingu·2024년 9월 9일

Spring

목록 보기
9/21

Controller

  • 클라이언트의 모든 요청을 받아 URL 주소를 분석하여 필요한 요청 처리 클래스(Model)의 메소드를 호출해 클라이언트의 요청을 처리하고 JSP 문서(View)로 스레드를 이동하여 응답 처리되도록 프로그램의 흐름을 제어하는 기능 제공 - 서블릿(Servlet)으로 구현

Front Controller Pattern[DispatcherServlet]

  • 모든 클라이언트 요청을 단일 진입점(즉, Front COntroller)으로 받아들이고, 이 요청을 적절한 핸들러(Controller)로 전달하여 처리하는 패턴

  • Front Controller Pattern의 핵심은 모든 요청을 하나의 컨트롤러(예: 서블릿, 디스패처 서블릿)에서 수집하고, 요청을 분석한 후 적잘한 비즈니스 로직을 수행하는 컨트롤러로 분기시키는 것이다.

  • [web.xml] 파일에서 클래스를 서블릿으로 등록하고 클라이언트의 모든 요청을 받아 처리할 수 있도록 URL 패턴을 동록 처리 해야한다.

web.xml(Spring MVC 세팅 아님)

  • servlet: 서블릿 클래스를 서블릿으로 등록하기 위한 엘리먼트

    • servlet-name: 서블릿을 구분하기 위한 식별자를 설정하기 위한 엘리먼트

    • servlet-class: 서블릿 요청시 객체로 생성될 서블릿 클래스를 설정하기 위한 엘리먼트

  • servlet-mapping: 서블릿을 요청할 수 있는 URL 주소를 등록하기 위한 엘리먼트

    • servlet-name: 요청에 의해 실행될 서블릿의 식별자를 설정하기 위한 엘리먼트

    • url-pattern: 서블릿을 요청할 수 있는 URL 주소(패턴)를 설정하기 위한 엘리먼트

Model

  • 클라이언트의 요청을 처리하는 기능의 클래스 - 요청 처리 클래스

  • 클라이언트의 요청을 하나의 클래스로 처리되도록 작성 - Command Controller Pattern

HandlerMapping

  • 클라이언트의 요청정보(Command)로 요청 처리 클래스(Model)의 객체를 제공하기 위한 클래스, 미리 만들어서 저장됨

View

  • 뷰(View - JSP)로 포워드 이동하여 클라이언트 요청에 대한 처리결과를 사용해 응답 처리
    => 요청 처리 메소드의 반환값(ViewName)을 사용해 JSP 문서의 컨텍스트 경로를 완셩해 포워드 이동

ModelAndView 객체

  • 처리결과와 뷰이름을 저장하기 위한 객체

  • ModelAndView.addObject(String attributeName, Object attributeValue)

    • ModelAndView 객체에 요청 처리 메소드의 실행결과를 속성값으로 저장하기 위한 메소드 - Request Scope
      => JSP 문서에 ModelAndView 객체에 저장된 속성값을 제공받아 응답 처리 가능
  • ModelAndView.setViewName(String viewName)

    • ModelAndView 객체의 뷰이름을 변경하는 메소드
  • ModelAndView 객체를 사용할 때 EL 표현식으로 사용할 수 있다. ${해당 속성값만 사용}

    • 속성값만 써도 되는 이유: Spring MVC는 ModelAndView에 저장된 데이터를 자동으로 Request Scope에 저장하여 JSP에 쉽게 접근할 수 있도록 하기 때문에 EL 표현식에서 ${productList}productList 라는 이름의 속성을 찾을 수 있다.

2024.08.29

web.xml 파일에 DispatcherServlet을 Front Controller로 등록

mvc-content1.xml

  • Controller 인터페이스를 상속받은 자식클래스(요청 처리 클래스)를 Spring Bean으로 등록

  • SimpleUrlHandlerMapping 객체를 사용하여 컨트롤러(DispatcherServlet 객체)에게 클라이언트 요청정보를 전달받아 요청 처리 클래스(Controller)의 객체를 반환하는 기능을 제공한다.

profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글