디스패처 서블릿의 dispatch는 "보내다"라는 뜻이다.
디서패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller) 이다.
과거에 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, Dispatcher-Servlet은 해당 어플리케이션으로 들어오는 모든 요청을 핸들링 해주고 공통 작업을 처리 하면서 편리하게 이용할 수 있게 되었다. 즉, 컨트롤러를 구현해두기만 하면 Dispatcher-Servlet가 알아서 적합한 컨트롤러로 위임 해주는 구조가 되었다.
결론
디스패처 서블릿을 통해 요청을 처리할 컨트롤러를 찾아서 위임하고, 그 결과를 받아온다.
예제
@WebServlet("/CalServlet")
public class CalServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public CalServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//num1, num2 값을 받아서 합을 구하기
int num1, num2 = 0;
String name = "";
request.setCharacterEncoding("utf-8"); // 한글 깨짐 방지를 위한 인코딩 작업
num1 = Integer.parseInt(request.getParameter("num1"));
num2 = Integer.parseInt(request.getParameter("num2"));
name = request.getParameter("userName");
int result = num1 + num2;
request.setAttribute("result", result);
request.setAttribute("userName", name);
RequestDispatcher re = request.getRequestDispatcher("/basic/result.jsp");
re.forward(request, response);
}
}
참고자료
https://mangkyu.tistory.com/18
https://riimy.tistory.com/87
https://velog.io/@seculoper235/2.-DispatcherServlet-%EC%9D%B4%EB%9E%80
https://coder-in-war.tistory.com/entry/Spring-06-Spring-MVC-Framework%EC%99%80-Dispatcher-Servlet