Servlet 개념
클라이언트의 요청을 처리하고, 그 결과를 반환하는 자바 웹 프로그래밍 기술
- 웹페이지를 동적으로 생성하는 역할을 수행한다
Servlet Conainer의 역할
- Servlet의 생명주기를 관리한다
- 웹서버와의 통신지원
- 멀티쓰레드 지원, 관리
- 선언적인 보안 관리
예제 - Servlet 구현
1public class TestServlet extends HttpServlet {
2 private static final Logger logger = LoggerFactory.getLogger(TestServlet.class);
3
4 @Override
5 public void init() throws ServletException {}
6}
- doGet, doPost 등의 메소드를 구현해서 http 요청을 처리할 수 있다
Servlet Context를 등록하는 방법
web.xml 작성
- web.xml
web application의 설정을 위한 deployment descriptor (배포 지정자)
- 가장 기본적인 방법이다
- src/webapp/WEB-INF/web.xml에 위치한다
1<?xml version="1.0" encoding="UTF-8"?>
2<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
6 <servlet>
7 <servlet-name>myServlet</servlet-name>
8 <servlet-class>org.academy.abc.servlet.MyServlet</servlet-class>
9 </servlet>
10 <servlet-mapping>
11 <servlet-name>myServlet</servlet-name>
12 <url-pattern>/*</url-pattern>
13 </servlet-mapping>
14</web-app>
@WebServet 사용
- Servlet을 선언하면서 사용한다
1@WebServlet(value="/*", loadOnStartup = 1)
2public class TestServlet extends HttpServlet {...}
WebApplicationInitializer 구현
1public class OrderWebApplicationInitializer implements WebApplicationInitializer {
2 @Override
3 public void onStartup(ServletContext servletContext) throws ServletException {
4 var servletRegistration = servletContext.addServlet("test", new TestServlet());
5 servletRegistration.addMapping("/*");
6 servletRegistration.setLoadOnStartup(1);
7 }
8}
DispatcherServlet
HTTP요청을 중앙집중식으로 처리하는 프론트 컨트롤러이다
MVC 패턴
- DispatcherServlet이 Handler mapping을 통해 Handler를 찾는다
- Handler adapter가 DispatcherServlet과 handler 사이의 중간다리 역할을 수행한다
- Controller는 business logic을 처리하고 model과 view name을 반환한다
- Dispatcher servlet은 model을 view로 넘겨서 view 결과를 클라이언트에게 반환한다