반응형

LifecycleServlet

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



  • init()
메모리에 서블릿객체가 없을때 객체 생성시 호출
  • service(request, response)
한번 호출된후(메모리에 있을시) 호출
서블릿은 서버에 서블릿객체를 여러개 만들지않음
요청이 들어온다고 매번 생성하는게 아니라 요청된 객체가 메모리에 있는지 없는지만 체크하여 있다면 서비스 메서드만 호출
  • destroy()
서블릿이 수정되어 기존 서블릿객체(메모리에 올라가 있는)를 사용할수 없을때



Servlet 생명주기(정리)

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


실습코드

LifecycleServlet.java

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'><br>");
		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 호출!!");
//	}
//	
	

}

 

템플릿 메소드 패턴

https://jdm.kr/blog/116

반응형

'웹개발 > 부스트코스(웹프로그래밍)' 카테고리의 다른 글

자바스크립트  (0) 2018.12.27
Request Response  (0) 2018.12.25
서블릿(Servlet) 이란  (0) 2018.12.22
웹어플리케이션 프로젝트 생성  (0) 2018.12.19
apache tomcat 설치  (0) 2018.12.19
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기