public class HellobootApplication {

	public static void main(String[] args) {
		ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
		WebServer webServer = serverFactory.getWebServer(servletContext -> {
            servletContext.addServlet("frontcontroller", new HttpServlet() {
				@Override
				protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
					// 인증, 보안, 다국어, 공통 기능
					if(req.getRequestURI().equals("/hello") && req.getMethod().equals(HttpMethod.GET.name())) {
						String name = req.getParameter("name");

						resp.setStatus(HttpStatus.OK.value());
						resp.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
						resp.getWriter().println("Hello " + name);
					}
					else if (req.getRequestURI().equals("/user")) {
						//
					}
					else {
						resp.setStatus(HttpStatus.NOT_FOUND.value());
					}
				}
			}).addMapping("/*");
        }); // 웹서버 생성
		webServer.start(); // Tomcat Servelet Container 동작
	}
}

GET Method

image.png

Http/1.1 200

Post Method

image.png

Http/1.1 404

프론트 컨트롤러 동작 방식

실질적인 웹 애플리케이션 로직을 담당하는 부분은 다른 오브젝트에게 위임

요청을 처리하는 방법 두 가지가 존재

  1. request와 response 오브젝트를 직접 전달

    다른 컨트롤러에게 request, response 오브젝트를 넘겨서 처리하게 함

  2. 다른 방식으로 요청

    특정 비즈니스 로직을 담당하는 서비스 계층에 요청을 보내어 처리하게 할 수도 있음