서블릿의 동작 순서
웹브라우저 -> 웹서버 -> 웹 어플리케이션 서버 -> 서블릿 컨테이너
스레드 생성
servlet 객체 생성
Servlet 기술 : CGI 를 대신할 수 있는 JAVA 기술 (기존의 CGI의 차이점)
1) 기존의 CGI : 로딩과 초기화 작업을 진행하기에 서버에 대한 오버헤드가 크다.
서블릿 > 한번 메모리에 로딩되어 수행되면 작업이 모두 수행되어 끝나더라도 메모리에서 해제되지 않는다 (재활용)
계속적인 수행 요청이 들어와도 메모리 로딩이나 초기화를 처리하지 않는다.
모든 서블릿은 한번만 메모리에 로딩되어 진다.
2) 특정 웹 서버에 비의존적이다.
JAVA 언어로 구현되는 프로그램이기 떄문에 플랫폼( OS )와는 무관한 실행 파일을 만들 수 있다.
기존의 CGI는 성능 향상을 피하기 위해서 API가 필요했던 것에 비해서
Servlet API를 활용해서 개발하면 된다. Servlet 엔진만 활용해도 된다.
3) 서블릿은 멀티 스레드로 동작한다.
Servlet은 CGI 처럼 웹브라우저로 부터 요청에 대해 각각의 프로세스를 생성하지 않는다.
각 요청에 대해서 스레드로 동작
Sevlet의 생명주기(life 사이클)
Servlet 객체생성 --> init() 호출 --> service(), doGet(), doPost() 호출 --> destroy() 호출
최초한번 최초한번 요청 시 매번 마지막 한번
TEST
package com.test.ex;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Cycle_Ex
*/
@WebServlet("/Cycle_Ex")
public class Cycle_Ex extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Cycle_Ex() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init() throws ServletException {
System.out.println("init호출");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet호출");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost호출");
}
@Override
public void destroy() {
System.out.println("destroy 호출");
}
}
처음에 init , doGet 호출 되고 그 뒤에 호출할때마다 doGet 호출됨. 종료시 destroy호출
요청할때마다 .
참고
서비스 가 있으면 doGet과 같이 있어도 Service호출이 우선시 되어 Service가 우선 호출 된다.
'Web > Spring , Springboot , JPA' 카테고리의 다른 글
[JSP. Servlet] #7 doGet() , doPost() 의 한글처리 (0) | 2019.12.05 |
---|---|
[JSP. Servlet] #6 servlet 선 ,후처리 init() - service() - destroy() (0) | 2019.12.05 |
[JSP. Servlet] #4 Get , Post (0) | 2019.12.05 |
[JSP. Servlet] #3 servlet이란? (0) | 2019.12.04 |
[JSP] #2 jsp 서블릿 특징+ 맵핑 (0) | 2019.12.04 |