Adventure Time - Finn 3
본문 바로가기
Spring

DispatcherServlet 모음

by hyun9_9 2024. 3. 17.

버전 01

   개발자가 직접만든 DispatcherServlet사용
   com.spring.controller.common.DisspatcherServlet
   <servlet-class>com.spring.controller.common.DispatcherServlet</servlet-class>

package com.spring.controller.common;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

// FrontController
// @ ▶ .xml : 서블릿 컨테이너(톰캣, 웹 서버)
public class DispatcherServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	private HandlerMapping handler;
	private ViewResolver viewResolver;

	public void init() {
		handler=new HandlerMapping();
		viewResolver=new ViewResolver();
		viewResolver.setPrefix("./");
		viewResolver.setSuffix(".jsp");
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doAction(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doAction(request, response);
	}

	private void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String uri=request.getRequestURI();
		String cp=request.getContextPath();
		String commend=uri.substring(cp.length());
		System.out.println("FC : "+commend);

		Controller controller=handler.getController(commend);
		
		String view = controller.execute(request, response);

		if(view.contains(".do")) {
			view=viewResolver.getView(view);
		}
		response.sendRedirect(view);

	}
}

 

 

 

 

버전 02 
Spring 프레임워크에서 제공하는 DispatcherServlet사용
org.springframework.web.servlet.DispatcherServlet
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

Spring 프레임워크에서 제공하는 인코딩 필터
servlet 상속 받은게 filter
filter는 모든 .do에 반응한다
not POJO(Servlet,Filter,Listener)객체등록은 서블릿 컨테이너가 담당
서블릿 컨테이너의 설정파일인 web.xml 에 등록해야함

 


직접 만든거엔 init있는데 안쓰니까 web.xml init 할곳이없다
DI(의존주입,init())을 위한  .xml(설정파일)이 필요함
dispatcher-servlet.xml


어플리케이션.xml 스키마가 같음

설정파일이 생긴거면 컨테이너가 생긴것
presentation layer 프레젠테이션 레이어(표현 계층)가 생겼다! 

 

 

 




 

 

 

 

 

 

 

 

'Spring' 카테고리의 다른 글

Controller(Action) 모음  (0) 2024.03.19
SpringMVC 구조 개념  (0) 2024.03.18
트랜잭션  (1) 2024.03.16
DAO var.2 사용  (1) 2024.03.15
DAO var.1 -> DAO var.2 설정  (0) 2024.03.14