[JAVA] Servlet
JSP 동작원리 를 포스팅하던 중
서블릿 이야기가 나왔기 떄문에 정리해보려고 한다.
서블릿
클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
서블릿 특징
일반적으로 웹서버는 정적인 페이지만을 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹서버는
다른 곳에 도움을 요청해야 한다.
여기서 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿이다.
서블릿 동작방식
- 클라이언트가 URL 입력하면 HTTP Request가 Servlet Container로 전송
- 요청받은 Servlet Container는 HttpServletRequest, HttpServletResponse객체 생성
- web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾음
- 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 GET,POST여부에 따라 doGet(),doPost() 호출
- doGet(),doPost() 는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냄
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 객체 소멸
Servlet Container
Servlet Container : 서블릿을 관리해주는 컨테이너
서블릿을 관리해주는 것이 바로 서블릿 컨테이너 ,
클라이언트의 요청을 받고 응답을 할수있게, 웹 서버와 소켓으로 통신하며 대표적으로 톰캣이 있다.
톰캣은 실제로 웹 서버와 통신하여 JSP , Servlet이 작동하는 환경을 제공한다.
Servlet Container 역할
- 웹서버와의 통신지원
- 서블릿 생명주기 관리
- 멀티쓰레드 지원 및 관리
- 선언적인 보완 관리
서블릿 컨테이너 생명주기
JSP와 차이점 - 기능의 차이는 없고 역할의 차이만 있다.
Servlet
- Java 코드 안에 HTML 코드 (하나의 클래스)
- data processing(Controller)에 좋다.
- 즉 DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
- Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)
JSP
- HTML 코드 안에 Java 코드
- presentation(View)에 좋다.
- 즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
- JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)