Thứ Năm, 4 tháng 9, 2014

Servlet LifeCycle

Servlet có một vòng đời nhất định và được quản lý bởi servlet container, bao gồm các giai đoạn  
  1. Tải Servlet Class.
  2. Tạo Instance of Servlet.
  3. Gọi phương thức init().
  4. Gọi phương thức service().
  5. Gọi phương thức destroy().
Giai đoạn 1, 2 and 3 chỉ được thực hiện 1 lần duy nhất khi servlet lần đầu tiên được tải.

Giai đoạn 4 được thực hiện nhiều lần - 1 lần/1 HTTP request.
Giai đoạn 5 được thực hiện khi servlet container dỡ bỏ (unload)servlet.
Mỗi giai đoạn được mô tả như sau

Tải Servlet Class

Trước khi một servlet có thể được gọi thì servlet container phải tải servlet class. Theo mặc định thì servlet sẽ không được tải khi chưa nhận được request đầu tiên nào. Tuy nhiên chúng ta có thể bắt container load servlet theo tùy chỉnh của chúng ta.

Tạo Instance của Servlet

Khi servlet class được tải, servlet container tạo 1 instance của servlet.
Bình thường,chỉ 1 isntance duy nhất của servlet được tạo, và những request đồng thời cùng lúc tới servlet sẽ được xử lý ở cùng 1 instance của servlet.

Gọi phương thức Servlets init()

Khi servlet instance được tạo, phương thức init() sẽ được gọi, cho phép servlet được khởi tạo trước khi request đầu tiền được xử lý.
Chúng ta có thể xác định tham số cho phương thức init() của servlet trong web.xml file. Xem web.xml Servlet Configuration.

Gọi phương thức Servlets service()

Đối với mỗi request mà servlet nhận được, nó sẽ gọi phương thức service(). Đối với HttpServlet subclasses, phương thức doGet(), doPost() etc sẽ được gọi.
Đến khi nào servlet còn hoạt động trong servlet container thì phương thức service() còn có thể được gọi. Vì thế giai đoạn này có thể được thực hiện nhiều lần

Gọi phương thức Servlets destroy()

Khi servlet container gỡ bỏ 1 servlet, phương thức destroy() của servlet sẽ được gọi. Bước này chỉ được thực hiện 1 lần vì 1 servlet chỉ được gỡ bỏ 1 lần duy nhất.
Một servlet sẽ được gỡ bỏ bởi container nếu container dừng hoạt động hoặc khi container tải lại toàn bộ ứng dụng web khi ứng dụng đang chạy.

1 nhận xét: