Thứ Hai, 24 tháng 10, 2016

Extend of a Servlet class and life cycle

1. Sự kế thừa của Servlet:



 - 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ứaServlet để 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 mà 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ộtServlet 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 servletvì vậy nó sẽ được truy cập thông qua giao thức HTTP.



2.Life Cycle



- Vòng đời của Servlet 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

- 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 {
}

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 {
}

doGet():

Một yêu cầu GET, là kết quả từ một yêu cầu chuẩn cho URL hoặc từ một HTML form, mà không có PHƯƠNG THỨC nào được xác định và nó nên được xử lý bởi phương thức doGet().
public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet code
}

- doPost():

Một yêu cầu POST, là kết quả từ một HTML form mà liệt kê POST như là PHƯƠNG THỨC, và nên được xử lý bởi phương thức doPost():
public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet code
}

-  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. Phương thức này trông giống như sau:
  public void destroy() {
    // Finalization code...
  }

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

Đăng nhận xét