[J2EE]-[Servlet]-Java Servlet
Các technologies chính của J2EE/JEE (Java 2 Platform, Enterprise Edition (J2EE) technology) là Servlet, EJB, JSP. Ở đây mình chỉ nói về Servlet.
// Phần trình bày này sẽ bổ sung nữa. Lúc mình viết là viết theo những gì đang nghĩ chứ chưa hoàn toàn đầy đủ và hệ thống. Mình sẽ chỉnh sửa và cập nhật thêm khi phát hiện thấy cần nói thêm gì khác.
Java Servlet
1. Java Sevlet
Sevlet là 1 kỹ thuật lập trình phía server-side. Một Java Servlet là 1 component chạy trong WebServer (WebServer này sẽ làm nhiệm vụ quản lý vòng đời của các Java Servlets) và nó nằm trong Web container.
2. Kiến trúc của Web Container:
// Mô hình Web Container trên mình lấy của JEE tutorial 5, hình của tutorial 6 chả biết sao mà version sau mà hình xấu quá!
3. Cơ chế: Dựa theo hình mô tả bên trên:
Servlet là 1 component chạy trên server và nó trao đổi thông tin với client (vẫn dựa theo mô hình Client và Server thông thường) theo cơ chế request và response. Client gửi request đến server thông qua giao thức HTTP(hypertext transfer protocol) và request đó được đóng gói lại thành HTTPRequest. Web server sẽ nhận request đó, làm nhiệm vụ chuyển đổi thành HTTPServletRequest và chuyển đến servlet. (Tất cả những việc chúng ta làm trên client đều được hiểu là sinh ra những request.) Nếu servlet đó chưa có thì Web server sẽ tạo 1 servlet và servlet đó sẽ nhận request và thực thi. Servlet sẽ response lại dưới dạng 1 gói HTTPServletResponse. Web server sẽ chuyển thành HTTPResponse và gửi trả về cho client.
4. Tại sao nên dùng Java Servlet?
Trước khi Java Servlet ra đời, người ta dùng CGI, và đặc điểm của kỹ thuật này là: Khi CGI components chạy trên server, khi CGI script được gọi bởi 1 client thì khi chạy xong nó sẽ thoát ra, và tiếp tục nếu có client nào đấy khác gọi nó thì nó lại tiếp tục được load lên bộ nhớ. Vậy nếu như có 1000 clients gọi đúng 1 component đó thì sẽ tạo ra 1000 instances chạy trên server. Và mỗi lần dùng thì phải load nó lên bộ nhớ rồi mới chạy hệ thống dẫn đến làm chậm hệ thống.
Thuận lợi của Java Servlet là khi servlet chạy trên server thì nó sẽ load component lên bộ nhớ -> tạo ra 1 instance và instance này sẽ nằm ở đấy và phục vụ cho n request từ các client khác nhau. Sau khi phục vụ xong thì nó sẽ được giải phóng.
5. Servlet được quản lý bởi Web server thông qua gì?
Web server quản lý servlet qua tên của servlet, mỗi tên sẽ map vào source codetương ứng, thông tin này được lưu trong file web.xml nằm trong thư mục WEB-INF của project. Trong 1 Web appliation sẽ có nhiều servlets và thông tin cấu hình này sẽ được lưu trong file này.
JEE 5 trở về trước quản lý thông tin các servlet thông qua file web.xml:
Trong file web.xml sẽ lưu thông tin cấu hình, mỗi servlet được new thì bên trong file cấu hình này sẽ sinh ra thông tin để server quản lý nó.
JEE 6 bắt đầu quản lý chúng dưới dạng annotation ngay trong các servlet:
6. Nhiệm vụ của servlet:
- Servlet làm nhiệm vụ controller trong mô hình MVC
- Servlet là 1 Web Component, ngoài ra JSP cũng là 1 Web Component. ( Thêm JavaBeans thì cả 3 đều nằm trong sự quản lý của Web Server, do server quản lý và chúng đều thuộc JEE flatform )
6. Tạo 1 Servlet:
Theo Sun's specification thì 1 Servlet cũng là 1 Java class chứa code Java nhưng đặc biệt ở chỗ nó extends HTTPServlet class. Khi extend HTTPServet thì mặc nhiên 1 Java class trở thành 1 servlet.
(updating)
Main referneces:
- Prentice Core Servlets And Java Server Pages Core Technologies 2nd Edition
- TinHuynh's Lectures
// Phần trình bày này sẽ bổ sung nữa. Lúc mình viết là viết theo những gì đang nghĩ chứ chưa hoàn toàn đầy đủ và hệ thống. Mình sẽ chỉnh sửa và cập nhật thêm khi phát hiện thấy cần nói thêm gì khác.
Java Servlet
1. Java Sevlet
Sevlet là 1 kỹ thuật lập trình phía server-side. Một Java Servlet là 1 component chạy trong WebServer (WebServer này sẽ làm nhiệm vụ quản lý vòng đời của các Java Servlets) và nó nằm trong Web container.
2. Kiến trúc của Web Container:
// Mô hình Web Container trên mình lấy của JEE tutorial 5, hình của tutorial 6 chả biết sao mà version sau mà hình xấu quá!
3. Cơ chế: Dựa theo hình mô tả bên trên:
Servlet là 1 component chạy trên server và nó trao đổi thông tin với client (vẫn dựa theo mô hình Client và Server thông thường) theo cơ chế request và response. Client gửi request đến server thông qua giao thức HTTP(hypertext transfer protocol) và request đó được đóng gói lại thành HTTPRequest. Web server sẽ nhận request đó, làm nhiệm vụ chuyển đổi thành HTTPServletRequest và chuyển đến servlet. (Tất cả những việc chúng ta làm trên client đều được hiểu là sinh ra những request.) Nếu servlet đó chưa có thì Web server sẽ tạo 1 servlet và servlet đó sẽ nhận request và thực thi. Servlet sẽ response lại dưới dạng 1 gói HTTPServletResponse. Web server sẽ chuyển thành HTTPResponse và gửi trả về cho client.
4. Tại sao nên dùng Java Servlet?
Trước khi Java Servlet ra đời, người ta dùng CGI, và đặc điểm của kỹ thuật này là: Khi CGI components chạy trên server, khi CGI script được gọi bởi 1 client thì khi chạy xong nó sẽ thoát ra, và tiếp tục nếu có client nào đấy khác gọi nó thì nó lại tiếp tục được load lên bộ nhớ. Vậy nếu như có 1000 clients gọi đúng 1 component đó thì sẽ tạo ra 1000 instances chạy trên server. Và mỗi lần dùng thì phải load nó lên bộ nhớ rồi mới chạy hệ thống dẫn đến làm chậm hệ thống.
Thuận lợi của Java Servlet là khi servlet chạy trên server thì nó sẽ load component lên bộ nhớ -> tạo ra 1 instance và instance này sẽ nằm ở đấy và phục vụ cho n request từ các client khác nhau. Sau khi phục vụ xong thì nó sẽ được giải phóng.
5. Servlet được quản lý bởi Web server thông qua gì?
Web server quản lý servlet qua tên của servlet, mỗi tên sẽ map vào source codetương ứng, thông tin này được lưu trong file web.xml nằm trong thư mục WEB-INF của project. Trong 1 Web appliation sẽ có nhiều servlets và thông tin cấu hình này sẽ được lưu trong file này.
JEE 5 trở về trước quản lý thông tin các servlet thông qua file web.xml:
Trong file web.xml sẽ lưu thông tin cấu hình, mỗi servlet được new thì bên trong file cấu hình này sẽ sinh ra thông tin để server quản lý nó.
JEE 6 bắt đầu quản lý chúng dưới dạng annotation ngay trong các servlet:
6. Nhiệm vụ của servlet:
- Servlet làm nhiệm vụ controller trong mô hình MVC
- Servlet là 1 Web Component, ngoài ra JSP cũng là 1 Web Component. ( Thêm JavaBeans thì cả 3 đều nằm trong sự quản lý của Web Server, do server quản lý và chúng đều thuộc JEE flatform )
6. Tạo 1 Servlet:
Theo Sun's specification thì 1 Servlet cũng là 1 Java class chứa code Java nhưng đặc biệt ở chỗ nó extends HTTPServlet class. Khi extend HTTPServet thì mặc nhiên 1 Java class trở thành 1 servlet.
(updating)
Main referneces:
- Prentice Core Servlets And Java Server Pages Core Technologies 2nd Edition
- TinHuynh's Lectures
No comments:
Post a Comment