티스토리 뷰

서블릿 작동순서

웹브라우저 - 웹서버 - 웹어플리케이션서버(WAS) - servlet컨테이너(스레드생성, 서블릿객체생성)






서블릿 라이프 사이클(생명주기)


1. servlet 객체생성 (최초한번)

2. init()호출 (최초한번)

3. service(), doGet(), doPost() 호출 (요청시 매번)

4. destory()호출 (마지막 한번 자원 헤제- 서블릿수정, 서버재가동 등)


서블릿의 최초 요청시 객체가 만들어져 메모리에 로딩되고 이후 요청시에는 기존의 객체를 재활용 -> 동작속도가 빠르다





  1. package ex.mystudy.am;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9.  
  10. @WebServlet("/LC")
  11. public class LifeCycle extends HttpServlet {
  12.     private static final long serialVersionUID = 1L;
  13.  
  14.     public LifeCycle() {
  15.         super();
  16.         System.out.println(">>> 생성자 호출 실행");
  17.     }
  18.  
  19.    
  20.     @Override
  21.     public void init() throws ServletException {
  22.         super.init();
  23.         System.out.println(">>> init() 실행");
  24.     }
  25.    
  26.    
  27.     public void destory() {
  28.         System.out.println(">>> destroy()실행");
  29.     }
  30.    
  31.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  32.         //response.getWriter().append("Served at: ").append(request.getContextPath());
  33.         System.out.println(">> doGet실행");
  34.     }
  35.  
  36.    
  37.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  38.         System.out.println(">>>doPost()실행");
  39.         doGet(request, response);
  40.     }
  41. }





->콘솔창









서블릿 선처리(@PostConstruct), 후처리(@PreDestroy)


1. 선처리 : init() 호출 전

2. 후처리 : destory() 호출 후





  1. package ex.mystudy.am;
  2.  
  3. import java.io.IOException;
  4. import javax.annotation.PostConstruct;
  5. import javax.annotation.PreDestroy;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12.  
  13. @WebServlet("/LC")
  14. public class LifeCycle extends HttpServlet {
  15.     private static final long serialVersionUID = 1L;
  16.  
  17.     public LifeCycle() {
  18.         super();
  19.         System.out.println(">>> 생성자 호출 실행");
  20.     }
  21.  
  22.    
  23.     @Override
  24.     public void init() throws ServletException {
  25.         super.init();
  26.         System.out.println(">>> init() 실행");
  27.     }
  28.    
  29.    
  30.     public void destory() {
  31.         System.out.println(">>> destroy()실행");
  32.     }
  33.    
  34.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  35.         //response.getWriter().append("Served at: ").append(request.getContextPath());
  36.         System.out.println(">> doGet실행");
  37.     }
  38.  
  39.    
  40.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  41.         System.out.println(">>>doPost()실행");
  42.         doGet(request, response);
  43.     }
  44.    
  45.    
  46.     @PostConstruct
  47.     private void postconstruct() {
  48.         System.out.println(">>> PostConstruct() 선처리");
  49.     }
  50.    
  51.    
  52.    @PostConstruct
  53.     private void predestory() {
  54.         System.out.println(">>> PreDestroy() 후처리")
  55.     }
  56. }






->콘솔창





'JSP' 카테고리의 다른 글

[JSP] Request, Response 간단한 회원가입창 예제  (0) 2018.07.10
[JSP] Request, Response 객체  (0) 2018.07.10
[JSP] Servlet - form값 받기  (0) 2018.06.21
[JSP] Servlet - doGet, doPost  (0) 2018.06.20
[JSP] 개념?  (0) 2018.06.20
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday