- WebProgramming에서 Client의 요청을 처리
- 그 결과를 다시 Client에게 전송하는 자바 프로그래밍 기술
- Servlet 클래스의 구현 규칙을 따른다.
- javax.servlet package에 정의된 인터페이스
- 서블릿의 라이프 사이클 을 위한 세 가지 필수적인 메소드를 정의
- init()
- service()
- destroy()
이 세 가지 메소드들은 모든 서블릿(SDK에서 정의되거나, 자체적으로 정의된)에 의해 구현되고, 특정 시간에 서버에 의해 호출됩니다.
- 서블릿 생명 주기 중 초기화 단계 에 호출된다.
- javax.servlet.ServletConfig 인터페이스를 구현하는 오브젝트가 전달된다.
- 이를 통해 서블릿이 웹 애플리케이션에서 초기화 매개변수(parameter)에 접근할 수 있도록 한다.
- 초기화 이후 각각의 요청들 이 들어오면 호출된다.
- 각각의 요청들은 별도로 나누어진 스레드에서 처리된다.
- 웹 컨테이너는 모든 요청에 대해 서블릿의 service() 메소드를 요청한다.
- service() 메소드는 요청의 종류를 판별하고 요청을 처리할 적절한 메소드로 전달합니다.
- 서블릿 객체가 파괴되어야 할 때 호출된다.
- 해당 서블릿이 가지고 있던 자원을 release 해줍니다.
- HTTP 요청(request)을 받아서 처리.
- 요청에 대한 응답(response)
- Client의 요청에 동적으로 작동
- Java Thread를 이용해 동작
- HTML 변경 시 재컴파일 필요
- Java 코드에 HTML이 들어가있음
- HTML을 사용해서 요청에 응답
- @WebServlet
- 해당 서블릿과 매핑될 url 지정
- HttpServlet 클래스 상속
@WebServlet("/Main.do")
public class MainServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//GET 방식으로 요청 받았을 떄 처리할 내용
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//POST 방식으로 요청 받았을 떄 처리할 내용
}
}
- 사용자(클라이언트)가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송합니다.
- HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성합니다.
- web.xml은 사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청을 한 것인지 찾습니다.
- 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 POST, GET여부에 따라 doGet() 또는 doPost()를 호출합니다.
- doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.
좋은 글 감사합니다!