Dispatcher Servlet

Workwork·2022년 8월 5일
0

React.Boot.Aws

목록 보기
7/19
post-thumbnail

<React.js, 스프링 부트, AWS로 배우는 웹 개발 101>(김다정 지음)을 따라 TO-DO 앱을 하나 만들 예정이다.

앞으로 쓸 대부분의 포스팅(이미지/글)은 위의 서적을 참고/출처로 작성되었음을 미리 밝힌다.

대부분의 자바 웹 앱들이 자바 서블릿을 기반으로 돌아가는 방법..

  • 개발자가 javax.servlet.http.HttpServlet을 상속 받는 서브 클래스 작성
  • 그러면 서블릿 컨테이너가 서블릿 서브 클래스를 실행

package com.example.Demo;

import java.io.*;
import javax.servlet.*;
import jacax.servlet.http.*;

public class Hello extends HttpServlet {

	@Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    // parameter 해석
    String name = request.getParameter("name");
    
    // business logic 실행
    process(name);
    
    // response 구축
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print("<html>");
    // UI 부분
    out.print("</html>");
    
    private void process(String name) {
    	// business logic
    }
}

원래는 웹서비스를 만들 때, HttpServlet을 상속하는 서브 클래스를 만들고 doGet() 메서드를 구현해야 한다.
그 다음 매개변수로 넘어오는 HttpServletRequest에서 원하는 정보를 추출한다.
그런 다음 비즈니스 로직인 process() 실행하고
반환할 정보를 HttpServletResponse에 담는다.

process() 로직만 하나 하자고 이 난리를 쳐야하며,, API를 하나 만들 때마다 이 작업을 반복해야 한다.

스프링 부트는 어노테이션과 서브 클래스를 적절히 이용해 개발자들이 반복 작업과 코드를 최소화할 수 있도록 한다. 부트에는 이미 Dispatcher Servlet이라는 서브 클래스가 구현돼있다.
그래서 개발자가 서블릿 클래스를 작성하지 않아도 된다. 대신 개발자는 부트가 제공하는 어노테이션과 인터페이스를 이용해 스프링이 비즈니스 로직을 이해할 수 있도록 내부 기능을 구현하면 된다.

 @RestController // JSON을 리턴하는 웹 서비스임을 명시
 public class HelloController {
 
 	@GetMapping("/test") // path 설정, GET 메서드 사용
    public String process(@RequestParam String name) {
    	// 비즈니스 로직
        return "test" + name;
    }
 }
  • HttpServlet 상속받지 않아도 됨
  • doGet 오버라이드 안해도 됨
  • HttpServletRequest를 직접 파싱하지 않아도 됨
  • HttpServletResponse를 작성하지 않아도 됨
profile
나만 알아보면 된다는 마음으로 작더라도 조금씩

0개의 댓글