Blog cá nhân của Đức NT (GC00464)

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

Servlet Lifecycle

20:46 Posted by Đức NT No comments
Vòng đời của Servlet có thể gọi là quá trình từ lúc khởi tạo ra nó cho đến lúc tiêu hủy, gồm các giai đoạn:
  1. Khởi tạo Servlet Class.
  2. Tạo Instance of Servlet.
  3. Gọi đến phương thức init() để khởi tạo Servlet.
  4. Gọi đến phương thức service() để xử lý yêu cầu.
  5. Servlet được kết thúc bằng phương thức destroy()

Các giai đoạn 1,2 và 3 chỉ được thực hiện 1 lần duy nhất.
Giai đoạn 4 được thực hiện nhiều lần - mỗi lần cho một HTTP request đến servlet.
Giai đoạn 5 được thực hiện ở cuối vòng đời của servlet, sau khi được gọi sẽ đưa tất cả mọi thứ về thùng rác và kết thúc vòng đời của servlet.


Tìm hiểu thêm về các phương thức trong vòng đời của servlet:
Phương thức init()
Phương thức init được thiết kế để được gọi là chỉ một lần. Nó được gọi là khi servlet là lần đầu tiên tạo ra. Vì vậy, nó chỉ được sử dụng để khởi tạo, cũng như với các phương thức init của applet.

Servlet thường tạo ra khi người dùng đầu tiên gọi một URL tương ứng với servlet, nhưng bạn cũng có thể xác định rằng các servlet được nạp khi máy chủ đầu tiên được bắt đầu.

Khi người dùng kích hoạt một servlet, một trường hợp duy nhất của mỗi servlet được tạo ra, với mỗi yêu cầu người sử dụng kết quả trong một chủ đề mới được bàn giao cho doGet hoặc doPost cho phù hợp. Phương thức init() chỉ đơn giản là tạo ra hoặc tải một số dữ liệu sẽ được sử dụng trong suốt cuộc đời của servlet.

Định nghĩa phương pháp init trông như thế này:

public void init() throws ServletException{
//Initialization code
}

Phương thức service()
Phương thức service () là phương thức chính để thực hiện các công việc thực tế. Servlet container (tức là web server) gọi service () để xử lý các yêu cầu đến từ các client (browser) và viết các response đã được định dạng lại cho khách hàng.

Mỗi khi máy chủ nhận được yêu cầu một servlet, máy chủ sinh ra một thread mới và gọi method service(). Phương thức service sẽ kiểm tra các loại yêu cầu HTTP (GET, POST, PUT, DELETE, vv) và gọi các phương thức doGet, doPost, doPut, doDelete,v.v phù hợp.


public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException{
}

Phương thức service() được gọi bởi servlet container và phương thức service này lại gọi phương thức doGet(),doPost(),doPut(). Vì thế bạn không cần phải làm với phương thức này nhưng bạn cần phải gi đè lên hoặc là doGet hoặc là doPost hoặc doPut tuỳ thuộc vào loại yêu cầu bạn nhận được từ phía client

doGet()doPost() thường xuyên được xử dụng nhất với mỗi service request.

Phương thức destroy()
Phương thức destroy() được gọi một lần vào cuối vòng đời của một servlet. Phương pháp này cho servlet của bạn một cơ hội để đóng các kết nối cơ sở dữ liệu ngăng chặn chỉ đề nền, viết danh sách cookie học ghi các thông tin cần thiết vào đĩa và thực hiện các hoạt động dọn dẹp khác tương tự như vậy

Sau khi phương thức destroy() được gọi, đối tượng servlet được đánh dấu để thu gom rác. Phương thức destroy() được viết như sau:

public void destroy(){
}

Hình dưới đây mô tả một chu kỳ vòng đời servlet điển hình.
  • Đầu tiên các yêu cầu HTTP đến máy chủ được giao cho servlet container.
  • Servlet container tải servlet trước khi service().
  • Sau đó servlet container xử lí nhiều yêu cầu bởi mutiple thread, mỗi một thread thực hiện một service() của một single intance của servlet.

0 nhận xét:

Đăng nhận xét

Bỏ capcha cho thầy tiện comment :P