Servlet - 생명주기
Servlet
? 웹에서 발생하는 요청을 받고 그에 대한 응답을 생성할 수 있는 어플리케이션의 조건을 모아놓은 명세서.
서블릿 개발 단계
1. HttpServlet 을 상속받은 소스 정의
2. 컴파일(-d) : /WEB-INF/classes에 클래스를 배포.
3. WAS에 서블릿 등록(web.xml - ver2.5, @WebServlet)
-servlet
-> servlet-name(required)
-> servlet-class(required)
load-on-startup, init-param (optional)
4. 서블릿 매핑(web.xml - ver2.5, @WebServlet)
- servlet-mapping
->servlet-name
->url-pattern
5. WAS restart (auto-reload 설정시 생략가능)
** Web Application Server , Web Container, Servlet Container
container ?? 컴포넌트 생명 주기 관리자
Servlet Container ?? Servlet의 생명주기 관리자 -> 생명주기 관리내에서 callback을 호출
$("#button").on("click",function(){});
callback ?? 특정 컨텍스트 내에서 어떤 이벤트가 발생했을때 (특정 조건이 만들어졌을때). 시스템 내뷍서 자동으로 호출되는 구조.
생성 - init
요청 - service, doXXX
소멸 - destroy
public class DescServlet extends HttpServlet {
public DescServlet() {// 기본생성자 알트 쉬프트 에스 밑에서 두번째
super();
System.out.println(this.getClass().getName() + "생성");// 인스턴스에있는 클래스에 접근할려면 이 메소드를 이용한다.
}
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println(this.getClass().getName() + "초기화");
String initValue = config.getInitParameter("parma1");
System.out.println("param1의 값 - "+initValue);
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("요청처리 시작");
super.service(req, res); // http 요청의 method를 파악하고, 해당 callback을 호출.
System.out.println("요청처리 종료");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("Desc Servlet");
System.out.println("do Get 실행");
}
@Override
public void destroy() {
super.destroy();
System.out.println(this.getClass().getName() + "소멸");
}
}