Thứ Bảy, 22 tháng 10, 2016

SERVJSP - Buổi 2: Gia phả và Vòng đời của Servlet

I. Gia phả:
 - Gói javax.servlet chứa một lớp trừu tượng tên là GenericServlet.
 - Các GenericServlet kế thừa từ lớp Object và giúp thiết kế một giao thức servlet độc lập.
 - Các GenericServlet thực hiện ba giao diện:

 + Servlet: Nó định nghĩa các phương pháp vòng đời cho một Servlet.
 + ServletConfig: Nó định nghĩa các phương pháp được sử dụng bởi trình chứa Servlet để chuyển thông tin đến một trường hợp Servlet trong quá trình khởi của nó.
 + Serializable: Nó được định nghĩa trong gói java.io để tuần tự các trạng thái của một đối tượng.
 - Các đoạn mã cho thấy làm thế nào để tạo ra một servlet đăng nhập giao thức độc lập:

 - Trong đoạn code cho trước, lớp có tên LoginServlet một servlet chung.
 - Để phát triển một servlet chỉ được truy cập thông qua một trình duyệt web, người dùng có thể tạo ra một Servlet HTTP bằng cách mở rộng HttpServlet lớp.
 - Lớp HTTPServlet là một lớp con của GenericServlet và cho phép tạo ra một Servlet dựa trên HTTP như là một phần của một ứng dụng Web.

 - Các đoạn mã cho thấy sự sáng tạo của servlet đăng nhập để được truy cập trên trang web:

 - Trong đoạn mã nhất định, LoginServlet được định nghĩa là HTTP servlet, vì vậy nó sẽ được truy cập thông qua giao thức HTTP.


II. Vòng đời:


 - Có thể được định nghĩa như là một tiến trình đầy đủ từ khi được tạo ra đến khi bị hủy. Một Servlet theo các giai đoạn sau:
 + Servlet được khởi tạo bởi gọi phương thức init().
 + Servlet gọi phương thức service() để xử lý một yêu cầu từ Client.
 + Servlet bị hủy bởi triệu hồi phương thức destroy().
 + Cuối cùng, servlet trở thành rác và được thu thập bởi Garbage Collector của JVM.

 - Trong sơ đồ này, miêu tả các giai đoạn trong vòng đời của một Servlet đặc trưng:
 + Đầu tiên, các HTTP Request tới Server và được đưa tới Container của Servlet.
 + Container Servlet tải các servlet trước khi gọi phương thức service().
 + Sau đó Container Servlet xử lý nhiều yêu cầu bởi việc tạo nhiều thread, mỗi thread thực thi phương thức service() cho một đối tượng servlet đơn.



1. init():

Phương thức được thiết kế để chỉ được gọi một lần. Nó được gọi khi Servlet lần đầu được tạo, và không được gọi lại cho mỗi yêu cầu của người dùng. Vì thế, nó được sử dụng cho các khởi tạo one-time, giống như phương thức init của Applet.
Thường thì, Servlet được tạo khi một người dùng lần đầu triệu hồi một URL tương ứng với Servlet đó, nhưng bạn cũng có thể xác định rằng Servlet này được tải khi Server được khởi động lần đầu.
Khi một người sử dụng triệu hồi một Servlet, một đối tượng đơn của Servlet được tạo, với mỗi yêu cầu từ người dùng, là kết quả trong một thread mới, mà được thao tác tới doGet hoặc doPost một cách thích hợp. Phương thức init() tạo hoặc tải một vài dữ liệu mà sẽ được sử dụng qua vòng đời của Servlet đó.
public void init() throws ServletException {
}

2. service():
Phương thức service() là phương thức chính để thực hiện tác vụ thực sự. Nơi chứa servlet (ví dụ như Web Server) gọi phương thức service() để xử lý các yêu cầu từ Client (hoặc trình duyệt) và viết phản hồi đã được định dạng trở lại Client đó.
Mỗi khi Server nhận một yêu cầu cho một Servlet, thì Server tạo một Thread mới và triệu hồi service(). Phương thức service() kiểm tra kiểu yêu cầu HTTP (Kiểu GET, POST, PUT, DELETE,...) và gọi các phương thức doGet, doPost, doPut, doDelete,... tương ứng một cách thích hợp.
public void service(ServletRequest request, ServletResponse response) 
      throws ServletException, IOException {
}

3. destroy():
Phương thức destroy() chỉ được gọi một lần ở giai đoạn cuối trong vòng đời Servlet. Phương thức này giúp servlet của bạn một cơ hội để đóng các kết nối tới Database, dừng thread, viết các danh sách cookie hoặc viết tính toán trên đĩa, và thực hiện các hoạt động cleanup khác.
Sau khi phương thức destroy() được gọi, đối tượng servlet này được đánh dấu cho Garbage Collector.
public void destroy() {
}

Không có nhận xét nào:

Đăng nhận xét