반응형
Containerless
Containerless 지향적이란?
서블릿컨테이너와 관련된 번거롭고 복잡한 작업들, 그에대한 지식들을 상관하지않고, bean을 관리하는 것에만 초점을 맞춘 것이다.
ex) xml, 서블릿 컨테이너 설치
@SpringBootApplication 없이? 동작하는 방법은?
public static void main(String[] args){
new Tomcat().start();
}
-> 이렇게 사용하기에는 너무 복잡하다.
public static void main(String[] args){
new TomcatServletWebServerFactory server = new TomcatServletWebServerFactory();
WebServer webServer = server.getWebServer(servletContext -> {
servletContext.addServlet("hello",new HttpServlet(){
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)throws SevletException,IOException{
String name = req.getParameter("name");
//resp.setStatus(200);
resp.setStatus(HttpStatus.OK.value());
//resp.setHeader("Content-Type","text/plain");
resp.setHeader("Content-Type",MediaType,TEXT_PLAIN_VALUE);
resp.getWriter().print("Hello Servlet");
}
}).addMapping("/hello");
});
//-> 실제 서버 생성(서블릿 컨테이너에 필요한 서블릿을 연결하는데 사용한다.)
//req -> request에 필요한 object
//resp -> response에 필요한 object
//web 응답에 필수요소인 상태코드,반환 타입, 값 을 입력했다.
webServer.start(); -> 서버 동작
}
-> 쉽게 톰켓을 사용할 수 있게 만든 도우미 클래스를 사용하면 된다.
getParameter를 사용하면 파라메터를 가져온다.
서블릿 컨테이너가 여러개의 서블릿 중 결정을 하는 것을 -> Mapping한다고 한다.
FRONT CONTROLLER
위와 같이 메핑하면 중복된 코드가 발생하고, 하나하나 메핑해줘야하기 떄문에 공통으로 처리해주는 controller를 만들자는 의미.
public static void main(String[] args){
new TomcatServletWebServerFactory server = new TomcatServletWebServerFactory();
WebServer webServer = server.getWebServer(servletContext -> {
servletContext.addServlet("hello",new HttpServlet(){
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)throws SevletException,IOException{
if(req.getRequestURI()).equals("/hello")&&req.getMethod().equals(HttpMethod.GET.name())){
//resp.setStatus(200);
resp.setStatus(HttpStatus.OK.value());
//resp.setHeader("Content-Type","text/plain");
resp.setHeader("Content-Type",MediaType,TEXT_PLAIN_VALUE);
resp.getWriter().print("Hello Servlet");
}else if(req.getRequestURI()).equals("/user")){
}else{
resp.setStatus(HttpStataus.NOT_FOUND.value());
}
}
}).addMapping("/*");
});
webServer.start(); -> 서버 동작
}
아래와 같이 URL 요청에 따라 해당 servlet을 찾아주는 역할을 하는 FRONT CONTROLLER가 생기게 된다.

반응형
'Spring' 카테고리의 다른 글
| 태태개발일지 - Componet (1) | 2024.12.06 |
|---|---|
| 태태개발일지 - Spring(토비님) (1) | 2024.12.05 |
| 태태개발일지 - Spring 시작 (토비님) 기본 복귀하기 (1) | 2024.11.26 |
| 태태개발일지 - 스프링부트 이해와 원리(토비님) (1) | 2024.11.25 |
| 태태개발일지 - singleton pattern (0) | 2024.11.08 |