본문 바로가기

JSP

[Servlet] 서블릿 동작 원리와 라이프 사이클

 

서블릿 프로그램의 작성

 

1.모든 서블릿의 접근 지정자는 항상 public이어야 한다.

 

2.서블릿은 javax.servlet.http 패키지에서 제공하는 서블릿 클래스를 상속받아 구현한다.

      public class HelloServlet extends HttpServlet {

 

3.클라이언트 요청 방식은 GET방식과 POST방식 2가지로 제공된다.

      GET 방식 : 주소 창을 타고 넘어가기 때문에 보안이 되지 않음. 255자 이하의 소용량의 데이터 전송

      POST 방식 : HTML header를 타고 넘어가기 때문에 보안이 됨. 255자 이상의 대용량의 데이터를 전송

      GET방식으로 요청하면 doGet 메서드가 호출되고 POST 방식으로 요청하면 doPOST 메서드가 호출된다.

       <from method="get">   ->  GET방식 요청, doGet 메서드 호출

 

4.응답 방식을 결정한다.

  HttpServletResponse 클래스로 선언된 객체가 response라면 setContentType 메서드를 호출하여 응답방식 결정, 코드    셋 지정

  response.setContentType("text/html;charset=utf-8");

 

5.출력 통로를 결정해 준다.

   출력 스트림인 PrintWriter 객체를 HttpServletResponse 클래스로부터 얻어낸다.

 


서블릿 요청 URL 패턴

 

/servlet/서블릿클래스명

WAS에 여러 개의 웹 어플리케이션을 등록할 경우 각 웹 어플리케이션을 구분하기 위해 컨텍스트 패스를 사용

 

http://localhost:8080/JSP/servlet/HelloWorld

JSP: 컨텍스트 패스(프로젝트명)

servlet/HelloWorld : 서블릿 요청 URL 패스

 

server.xml

server.xml에서 컨텍스트 패스를 설정할 수 있다.


서블릿의 동작 원리

 

서블릿의 수행은 서블릿 컨테이너에 의해 처리되고 서블릿이 요청될 때마다 스레드가 계속 생성되어 서블릿 객체를 생성해서 수행한다.

자바 가상 머신에 서블릿 컨테이너가 존재하게 되고 서블릿 컨테이너가 서블릿 객체를 생성하게 된다.

 

  1. 브라우저에서 서블릿을 요청
  2. WAS 안에 웹 서버가 서블릿 요청을 인식하여 서블릿 컨테이너에게 서블릿을 수행하도록 넘김
  3. 서블릿 컨테이너는 스레드를 기동하여 해당 서블릿 객체를 생성하여 이를 수행
  4. 서블릿 객체의 작업이 종료되면 기동되었던 스레드는 종료하고 리턴
  5. 서블릿 수행결과가 웹 서버로 전송
  6. 클라이언트에 전송

 

서블릿이 첫 번째 요청인 경우에는 서블릿 클래스를 WEB-INF\classes에서 찾아 메모리에 로딩하여 인스턴스를 생성한다.

이때 생성된 서블릿 인스턴스는 메모리에 계속 남아 있게 되고 이후부터는 서블릿이 호출되어도 서블릿 인스턴스가 다시 생성되지 않고 이미 메모리에 로딩된 서블릿으로부터 서비스만 받기 때문에 수행속도가 빠르다.

 

'JSP' 카테고리의 다른 글

[JSP] JSTL (JSP Standard Tag Library)  (0) 2020.10.05
[JSP] 익스프레션 언어(expression language)  (0) 2020.10.02
[JSP] 세션 (Session)  (0) 2020.10.01
[JSP] 쿠키(Cookie)  (0) 2020.09.30
[JSP] JSP(JavaServer Pages) 정리  (0) 2020.09.29