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 동작
}
}
addMapping("/*")
모든 URL 요청을 프론트 컨트롤러가 처리하도록 서블릿 컨테이너에 등록함
슬래시( / )로 시작하는 모든 요청이 이 서블릿으로 전달됨
GET Method
Http/1.1 200
Post Method
Http/1.1 404
실질적인 웹 애플리케이션 로직을 담당하는 부분은 다른 오브젝트에게 위임
요청을 처리하는 방법 두 가지가 존재
request와 response 오브젝트를 직접 전달
다른 컨트롤러에게 request, response 오브젝트를 넘겨서 처리하게 함
다른 방식으로 요청
특정 비즈니스 로직을 담당하는 서비스 계층에 요청을 보내어 처리하게 할 수도 있음