Servlet Container là gì? Web Server là gì?
1. Web Server là gì?
Web server là một chương trình máy tính sử dụng HTTP (Hypertext Transfer Protocol) để truyền tải dữ liệu.
Tình huống đơn giản nhất, ví dụ bạn gõ url https://stackjava.com/ vào trình duyệt web (client) (chrome, ie, firefox…) rồi ấn enter. Một HTTP Request sẽ được gửi từ trình duyệt tới web server (nơi cài đặt trang web https://stackjava.com/) và trả về cho bạn một HTTP Response (Trang HTML), trình duyệt web hiển thị HTTP Response đó lên cho bạn đọc.
2. Servlet Container là gì?
Trước kia khi mới xuất hiện Internet thì chỉ có web tĩnh (static web), user/client gửi request nào thì nhận về trang web đó. Sau đó người ta muốn có web động, tức là người dùng yêu cầu gì thì web làm việc đó, ví dụ user nhập thông tin từ trang web rồi yêu cầu web server xử lý thông tin đó.
Để làm việc đó người ta sử dụng các ngôn ngữ lập trình khác nhau để xử lý yêu cầu nhận (Java, C#, PHP…)
Servlet Container là một phần của web server được viết bởi ngôn ngữ Java để xử lý các web động, yêu cầu tính toán từ client…
3. Servlet là gì?
Servlet là một interface định nghĩa trong package javax.servlet. Nó khai báo 3 method cần thiết cho một vòng đời của một servlet là init(), servlet() và destroy(). Nó được cài đặt bởi tất cả các servlet và thực thi bởi server. (Xem ví dụ tạo dynamic web với Servlet)
Giống bất kỳ chương trình Java nào, servlet chạy bên trong một JVM
4. Cách Servlet Container và Web Server xử lý một request
- Web Server nhận HTTP request
- Web Server forward request tới servlet container
- Servlet được lấy/tải lên container.
- Container thực hiện method init() của servlet (chỉ gọi method này khi servlet được load lần đầu tiên)
- Container thực hiện method service() của servlet để xử lý HTTP request (ví dụ như đọc dữ liệu, tính toán…)
- Web server trả về kết quả từ container cho client.
Servlet Container là gì? Web Server là gì?
Okay, Done!
References:
https://en.wikipedia.org/wiki/Web_container
https://stackoverflow.com/questions/45115824/web-server-vs-servlet-container