반응형
public static void main(String[] args) {
    ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
    WebServer webServer = serverFactory.getWebServer();
    webServer.start();
}

 

public static void main(String[] args) {
    ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
    WebServer webServer = serverFactory.getWebServer(servletContext -> {
        servletContext.addServlet("hello", new HttpServlet() {
            @Override
            protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                resp.setStatus(200);
                resp.setHeader("Content-Type", "text/plain");
                resp.getWriter().println("Hello Servlet");
            }
        }).addMapping("/hello");
    });
    webServer.start(); 
}

 

public static void main(String[] args) {
    ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
    WebServer webServer = serverFactory.getWebServer(servletContext -> {
        servletContext.addServlet("hello", new HttpServlet() {
            @Override
            protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

                String name = req.getParameter("name"); // queryString 전달

                resp.setStatus(HttpStatus.OK.value());  // 하드코딩시 오타 발생 가능
                resp.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
                resp.getWriter().println("Hello Servlet!!! " + name);
            }
        }).addMapping("/hello");
    });
    webServer.start();
}

프론트 컨트롤러의 경우 중복되는 것들을 줄여주는 역할을 하는데 인증과 같은것들을 해결해준다.

 

class HelloController{
    public String hello(String name){
    	return "Hello " + name;
    }
}

public static void main(String[] args) {
    ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
    WebServer webServer = serverFactory.getWebServer(servletContext -> {

        HelloController helloController = new HelloController();

        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");

                    String ret = helloController.hello(name);

                    resp.setStatus(HttpStatus.OK.value());
                    resp.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
                    resp.getWriter().println(ret);
                }else if(req.getRequestURI().equals("/user")){

                }else{
                    resp.setStatus(HttpStatus.NOT_FOUND.value());
                }
            }
        }).addMapping("/*"); // /밑으로 들어오는건 다 처리하겠다.
    });
    webServer.start();
}

 

 

 

 

반응형

'인강 > 토비의 스프링부트' 카테고리의 다른 글

스프링부트 자동구성 애플리케이션  (0) 2023.02.06
스프링부트 테스트  (0) 2023.02.06
스프링부트 스프링컨테이너  (1) 2023.02.05
스프링 부트  (0) 2023.02.04