서블릿 라이프사이클

     

    LifecycleServlet

    HttpServlet의 3가지 메소드를 오버라이딩

    • init()
    • service(request, response)
    • destroy()

    Servlet 생명주기

    • WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인합니다.
    •  if (메모리에 없음) {
       - 해당 서블릿 클래스를 메모리에 올림
       - init() 메소드를 실행
      }
       - service()메소드를 실행
    • was가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행됩니다.

     

    -do get 만으로도 service가 실행된 이유

    service(request, response) 메소드

    HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현합니다.

    • 클라이언트의 요청이 GET일 경우에는 자신이 가지고 있는 doGet(request, response)메소드를 호출
    • 클라이언트의 요청이 Post일 경우에는 자신이 가지고 있는 doPost(request, response)를 호출
    package examples;
    
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @WebServlet("/LifecycleServlet")
    public class LifecycleServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
     
        public LifecycleServlet() {
            System.out.println("LifecycleServlet 생성!!");
        }
    
    	public void init(ServletConfig config) throws ServletException {
    		System.out.println("init test 호출!!");
    	}
    
    	
    	public void destroy() {
    		System.out.println("destroy 호출!!");
    	}
    
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html");
    		PrintWriter out = response.getWriter();
    		out.println("<html>");
    		out.println("<head><title>form</title></head>");
    		out.println("<body>");
    		out.println("<form method='post' action='/firstweb/LifecycleServlet'>");
    		out.println("name : <input type='text' name='name'>");
    		out.println("<input type='submit' value='ok'><br>");                                                 
    		out.println("</form>");
    		out.println("</body>");
    		out.println("</html>");
    		out.close();
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html");
    		PrintWriter out = response.getWriter();
    		String name = request.getParameter("name");
    		out.println("<h1> hello " + name + "</h1>");
    		out.close();
    	}
    
    //	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //		System.out.println("service 호출!!");
    //	}
    //	
    	
    
    }
    

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading