Trang chủ Cloud Computing

Tìm hiểu về Servlet là gì? và Servlet Container là gì?

Khi tìm hiểu về Web server thì còn có thêm các khái niệm về servlet và servlet container. Vậy để hiểu rõ hơn về 2 khái niệm này, chúng đóng vai trò gì và hoạt động như thế nào trong 1 web server, chúng ta cùng tìm hiểu trong bài viết sau đây.

Trước tiên, để hiểu được Servlet container là gì?, chúng ta cần hiểu cơ bản một web server là gì?.

Web server là gì?

1 web server sử dụng giao thức HTTP để chuyển giao dữ liệu. Để hiểu 1 cách đơn giản, người dùng sẽ gõ 1 đường dẫn URL (ví dụ: https://tech.vccloud.vn/ ) trên trình duyệt của người đó và nhận về 1 trang web để xem. Vậy thì công việc của 1 web server chính là gửi trang web đó cho khách truy cập. Sự chuyển đổi trên giao thức HTTP này được gọi là 1 cặp: request và response tương ứng với mỗi một lần có khách truy cập vào website.

Tìm hiểu về Servlet là gì? và Servlet Container là gì? - Ảnh 1.

Servlet Container là gì?

Như chúng ta thấy, user/client (người dùng/khách truy cập trước kia chỉ có thể yêu cầu 1 web tĩnh (static web) từ server. Tuy nhiên, như vậy vẫn là chưa đủ nếu người dùng muốn đọc trang web dựa trên input của người đó. Có nghĩa là người dùng yêu cầu gì thì web làm theo như thế (web động). Ví dụ user nhập thông tin vào web và yêu cầu webserver xử lý thông tin đó.

Ý tưởng cơ bản của servlet container là sử dụng Java để tự động tạo trang web ở phía máy chủ, xử lý các yêu cầu tính toán từ phía client và trả lại các kết quả theo request của client đó. Vậy nên, servlet container thực chất là một phần của một web server tương tác với các servlet. Và đúng như tên gọi servlet container giống như 1 cái thùng chứa, chứa tất cả các servlet ở bên trong.

Servlet là gì?

Servlet là một giao diện được định nghĩa trong package javax.servlet. Nó thiết lập 3 method cần thiết cho vòng đời của một servlet - init (), service () và destroy (). Chúng được thực hiện bởi mỗi servlet và được gọi vào các thời điểm cụ thể bởi máy chủ.

Các lớp Servlet (class) cài đặt giao diện javax.servlet.Servlet chạy trong một web container thuộc một web server, đáp ứng nhiều yêu cầu của khách hàng trong cùng 1 thời điểm, được chuyển tiếp thông qua server và web server. Trình duyệt và Servlet giao tiếp với nhau bằng giao thức HTTP (1 giao thức stateless). Trình duyệt web thiết lập kết nối socket đến máy chủ lưu trữ trong URL và gửi yêu cầu HTTP. Một servlet nhận 2 đối tượng khi được gọi từ client. Một "ServletRequest", bao gồm yêu cầu của máy khách từ máy khách và "ServletResponse", gói thông tin liên lạc từ Servlet và trả lại máy khách.

Để hiểu một cách đơn giản thì khi nhận request từ máy khách, sẽ xác định thông tin request để biết được cần response gì. Và trong lập trình java, chúng ta sẽ được cung cấp một class gọi là servlet để tính toán logic quá trình tương tác HTTP (request và response). Mỗi khi có request từ client đến, web server sẽ phân tách url, http method để xác định xem nên giao request cho servlet nào trong servlet container. Và servlet tương ứng khi được giao request sẽ tiến hành logic.

Tìm hiểu về Servlet là gì? và Servlet Container là gì? - Ảnh 2.

Vòng đời của Servlet

Web container chịu trách nhiệm quản lý vòng đời của servlet. Web container tạo một phiên bản (instance) của servlet và sau đó gọi ra init () method. Khi hoàn thành init () method thì servlet đang ở trạng thái sẵn sàng cho các yêu cầu dịch vụ từ clients. Container gọi service () method của servlet để xử lý từng yêu cầu bằng cách sinh ra 1 thread mới cho mỗi yêu cầu từ thread pool của Web Container. Trước khi phá hủy instance, container sẽ gọi destroy () method. Sau khi destroy (), servlet trở thành rác chờ thu gom.

Giống như bất kỳ chương trình Java nào, servlet chạy trong một JVM. Servlet container sẽ tham gia để xử lý sự phức tạp của các HTTP rerquest. Servlet container chịu trách nhiệm cho việc tạo, thực hiện và hủy của servlet.

Tìm hiểu về Servlet là gì? và Servlet Container là gì? - Ảnh 3.

Cách Servlet container và web server xử lý một request

1. Máy chủ Web nhận HTTP request

2. Máy chủ Web chuyển tiếp yêu cầu tới servlet container

3. Servlet được lấy ra một cách tự động và tải lên địa chỉ không gian của container, nếu nó nằm trong container.

4. Container gọi init () method của servlet để khởi tạo (được gọi một lần khi servlet được load lần đầu tiên)

5. Container gọi service () method của servlet để xử lý HTTP request, tức là đọc dữ liệu trong yêu cầu và hình thành một response

6. Web server trả lại kết quả động đúng với vị trí yêu cầu

Tìm hiểu về Servlet là gì? và Servlet Container là gì? - Ảnh 4.

Vai trò của JVM

Việc sử dụng các servlet cho phép JVM xử lý từng yêu cầu trong một chuỗi Java riêng biệt, và đây là một trong những lợi thế chủ đạo của servlet container. Mỗi servlet là một Java class với các phần tử đặc biệt đáp ứng các HTTP request. Chức năng chính của Servlet container là chuyển tiếp các yêu cầu tới đúng servlet để xử lý và trả về các kết quả động tại đúng vị trí sau khi JVM đã xử lý chúng. Trong phần lớn các trường hợp, servlet container chạy trong một JVM duy nhất, tuy nhiên vẫn có các giải pháp khi container cần nhiều JVM.

Nguồn: VCCloud tổng hợp

>> Có thể bạn quan tâm: Tìm hiểu Web server hoạt động như thế nào?