Sunday, February 19, 2017

Servlet và hệ thống phân cấp Servlet

Tìm hiểu về Java Servlet - Vòng đời của Servlet (Servlet Life Cycle) - Mối quan hệ trong Servlet.






1. Servlet là gì

  • Java Servlets là các chương trình chạy trên một Web server hoặc một Application server và thực hiện như là một tầng trung gian giữa một Yêu cầu từ một trình duyệt web hoặc HTTP client với các Database hoặc các ứng dụng trên HTTP server.
    Sử dụng Servlets, bạn có thể thu thập Input từ người sử dụng thông qua các form trên trang web, hiển thị các bản ghi (record) từ một Database hoặc từ nguồn khác, và tạo các trang web động.


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

-Có thể hiểu vòng đời servlet là Một Servlet khi khởi tạo thì nói sống mãi trong bộ nhớ của server. Luôn lắng nghe và chờ đợi khi người dùng yêu cầu đến nó thì sẽ sẵn dùng chứ không cần khởi tạo một lần nữa.. Servlet chỉ ngừng lại khi chúng ta Stop hay Restart lại server.

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.


– Phương thức init():
  • Chỉ được gọi một lần trước khi servlet xử lý các request (trước khi service() được gọi). Method này có thể override, được sử dụng để khởi tạo các resource.
public void init() throws ServletException {
  // Initialization code...
}
– Phương thức service():
  • Được gọi bởi container khi client make request, có thể được gọi nhiều lần để xử lý các request. Service() dựa vào HTTP request để gọi các doXXX() tương ứng. Method này được xử lý trong từng thread riêng biệt. Không nên override.
public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{
}
– Phương thức 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
}
– Phương thức 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
}


Các phương thức trong HttpServlet để thực thi yêu cầu từ client đều bao gồm hai tham số:
  • HttpServletRequest : là các dữ liệu nhận từ phía client
  • HttpServletResponse : là các dữ liệu để trả về client
– Phương thức Destroy():
  • Chỉ được gọi chính xác 1 lần bởi container. Có thể override để clean resource
  public void destroy() {
    // Finalization code...
  }

Các bạn có thể tìm hiểu thêm tại: https://www.tutorialspoint.com/servlets/servlets_overview.htm



3. Mối quan hệ giữa Servlet, HttpServlet và GenericServlet

- Servlet là phía server, đáp ứng các yêu cầu do client chuyển đến. Các lớp servlet nói chung phải cài đặt giao diện javax.servlet.Servlet. Servlet API cung cấp hai lớp cài đặt từ giao diện này, ta phải thừa kế chúng để tạo ra servlet :
Servlet extends --> HttpServlet extend--> GenericServlet implements -->các interface(như Servlet, ServletConfig, Serializable ) .
  • GenericServlet cung cấp các chức năng cơ bản, độc lập giao thức, để tạo servlet. Thừa kế lớp này để tạo các lớp servlet cho dịch vụ không phải HTTP (non-HTTP). Khi thừa kế lớp này, ta cần viết lại phương thức service.
  • HttpServlet là lớp trừu tượng thừa kế GenericServlet và thêm vào các chức năng cho riêng HTTP. Khi xây dựng ứng dụng web, đa số các lớp servlet do ta viết sẽ thừa kế HttpServlet.
- Cây phân cấp


4. Tổng kết

* Ưu điểm
  • Có độ bảo mật cao.
  • Có hiệu năng và khả năng mở rộng cao.- Truy cập được tất cả Java API- Có nhiều tools bên phía Third - Party và JavaServlet được nhiều Webserver hỗ trợ.- Độc lập Platform và Server- Hầu hết các server đều cho phép load lại Servlet khi có thay đổi
* Nhược điểm
  • Là một công nghệ đã cũ nên có rất nhiều hạn chế và khó khăn khi làm việc với giao diện.

Tài liệu tham khảo

No comments:

Post a Comment