반응형
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 |