1. Servlet
1.1 Servlet 이란
- Servlet은 웹에서 JAVA 프로그래밍을 구현하기 위해 탄생 함.
- JAVA 로 구현된 CGI(Common Gateway Interface) 라고들 흔히 말함
- HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 Container에 의해서 실행되고, 관리된다.
- HTML 변경시 Servlet을 다시 컴파일 해야 하는 단점이 있다.
1.2 Servlet Container란
- HTTP 요청을 받아서 Servlet을 실행시키고, 그 결과를 사용자 브라우저에게 전달해주는 기능을 제공하는 컴포넌트 이다.
- Servlet을 실행하고 생명주기를 관리하는 역할을 한다.
- Servlet과 웹 서버(Apache, nginx..)가 서버 통신 할 수 있는 방법을 제공한다.
- 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리해준다.
- 대표적인 Conatainer에는 Tomcat, jetty, jboss 등이 있다.
1.3 Servlet 동작과정
① 사용자가 URL을 클릭하면 HTTP Request를 Servlet Container에 보낸다.
② Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
③ 사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다. (DD를 참조하여 분석)
④ 컨테이너는 서블릿 service() 메소드를 호출하며, POST, GET여부에 따라 doGet() 또는 doPost()가 호출된다.
⑤ doGet() or doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse객체에 응답을 보낸다.
⑥ 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.
DD (배포서술자, Deployment Descriptor) = web.xml
Servlet, Error Page, Listener, Fillter, 보안 설정등 Web Application의 설정 파일이다.
URL과 실제 서블릿의 매핑 정보도 담고 있다.
하나의 웹 어플리케이션에 하나만 존재한다.
보통 Web Document Root 디렉토리에 WEB-INF 폴더 아래 web.xml 파일로 존재한다.