Giới thiệu về SERVLET

Hiện nay, trong lâp trình có một xu hướng rất quan trọng đang được tập trung phát triển ứng dụng, đó là xây dựng các chương trình dịch vụ Java ờ phía máy chủ (Server)

Servlet là thành phần chính được sử dụng để phát triển các chương trình dịch vụ Java ờ phía máy chủ. Các Servlet là các chương trình Java thực hiện ở các ứng dụng Server (tên gọi “Servlet” cũng gần giống như “Applet” ờ phía máy Client) để trả lời cho các yêu cầu của Client. Các Servlet không bị ràng buộc chặt với một giao thức Client-Server cụ thể nào cả, nhưng giao thức thường được sử dụng là HTTP, do vậy, khi nói tới Servlet nghĩa là nói tới HTTP Servlet. Servlet là sự phát triển mờ rộng của CGI để đảm bảo Server thực hiện được các chức năng của mình. Ta có thể sử dụng Servlet cùa Java để tuỳ chinh lại một dịch vụ bất kỳ, như Web Server, Mail Server, v.v.

Web Server hiển thị các tư liệu được viết trong HTML và hồi đáp cho yêu cầu cùa người sử dụng qua HTTP. Các tư liệu HTML chứa các văn bản được đánh dấu (định dạng) để các trình duyệt như IE, Netscape đọc được.

Một trình duyệt chấp nhận đầu vào ờ dạng HTML, khi người sử dụng nhấn một nút để yêu cầu một số thông tin nào đỏ, một Servlet đơn giản được gọi để xử lý các yêu cầu đó. Các công việc chính cùa Servlet được mô tả khái quát trong hình 6.1, bao gồm:

  • Đọc các dữ liệu tường minh được Client gửi đến từ các yêu cầu (dữ liệu theo các khuôn dạng – form data).
  • Đọc các dữ liệu không tường minh dược Client gửi đến từ các yêu cầu (dữ liệu trong phần đầu cùa yêu cầu – request headers).
  • Xử lý và lưu trữ các dữ liệu được cung cấp dưới dạng

* Gửi trả lời dữ liệu tường minh cho Client (dạng HTML), cung cấp các nội dung động, vi dụ trả lời yêu cầu Client về các câu truy vấn vào các CSDL

  • Quản lý các thông tin trạng thái và trả lời dữ liệu không tường minh cho Client (các mã trạng thái và các phần đầu cùa trả lời).

Viết một Servlet là tương đổi dề. Ta chỉ cần có Tomcat, nó là tổ hợp của Java Server Pages111 1.1 và Servlets 2.2. Tomcat có thể nạp miễn phí từ http://iava.sun.com/products/isD/tomcat/. phần cài đặt sẽ được mô tả ở phần sau.

Các Servlet cũng được sừ dụng thay cho kịch bản giao diện cồng chung CGI Script. Khi tạo ra một trang Web, ta cũng sẽ tạo ra một ứng dụng Web.

Trước khi sừ dụng Servlet để tạo ra các ứng dụng Web, chúng ta đi tim hiểu xem có những khả năng lựa chọn nào khác để phát triển những ứng thing Web.

  • CGI: Theo cách thông thường, khi cần bỗ sung các chức năng mới cho một Web Server người ta hay sử dụng Common Gateway Interface (CGI), một giao diện độc lập với ngôn ngừ cho phép một Server khởi động một tiến trình ngoại đê nhận thông tin được yêu cầu thông qua các biến môi trường. Mồi yêu cầu được trả lời bởi một tiến trình riêng thông qua một đại diện riêng của một chương trình CGI hoặc bời một kịch bản CGI (thường được viết bắng ngôn ngữ thông dịch như Perl).
  • Fast CGI: Open Marked đã phát triển một chuẩn khác thay cho CGI được gọi là Fast CGI. Fast CGI hành động giống như Nó khác ở chồ, Fast CGI tạo ra một tiến trình bền vững cho từng chương trình.

Một Số chương trình ứng dụng khác như ASP và Java Script cũng hỗ trợ để tạo ra các ứng dụng Web. ASP được Microsoft phát triển để tạo ra các nội dung cho các trang Web động. Trong ASP, trang HTML có thể nhúng những phần nhỏ được viết bằng VBScript hoặc JScript. Netscape đưa ra kỹ thuật được gọi là JavaScript, cho phép đưa các phần mã lệnh nhó nhúng vào trang HMTL, nhằm tạo ra những nội dung Web động một cách linh hoạt hơn. Ngoài ra, Netscape còn cung cấp NSAPI, Microsof t đưa ra ISAPI cho các Web Server của họ.

Servlet có một số ưu điểm so với CGI:

  • Một Servlet không làm việc trong một tiến trình nêng. Điều này loại bỏ được việc phải tạo ra quá nhiều tiến trình mod cho mỗi yêu cầu.
  • Một Servlet sẽ thường trực trong bộ nhớ giữa các yêu cầu, trong khi các chương trinh CGI cần phải tải xuống và được khời động cho từng yêu cầu
  • Chỉ cần một Servlet trả lời đồng thời cho tất cả các yêu cẩu. Điều này cho phép tiết kiệm được bộ nhớ và đảm bào nó dễ dàng quản lý được dữ liệu một cách thống nhất.
  • Một Servlet có thể thực hiện bời một Servlet Engine trong phạm VI kiểm soát Sandbox để đảm báo an toàn trong việc sử dụng các

Các lóp Servlet của Java có thể được nạp tự động để mở rộng các chức năng của Server. Các Servlet cùa Java thực hiện bên trong JVM Chúng được đàm bào an toàn và chuyển đổi tương thích giữa các hệ điều hành và giữa các Server VỚI nhau. Điều này khác với các Applet, Servlet chỉ thao tác được trong miền của một Server.

Servlet API được phát triển dựa trên những điểm mạnh của Java platform nhằm giải quyết vấn đề tồn tại cùa CGI và Server API. Nó là một API đơn giản, hỗ trợ tất cả các Web server và thậm chí cho phép các ứng dụng máy chù dùng để kiểm tra và quàn lý các công việc trên Server Nó giải quyết vấn đề thực thi bằng việc thực hiện tất cả các yêu cầu như các luồng Thread trong quá trình xử lý, hoặc việc cân bằng tải trên một Server trong các cụm máy tính Cluster. Các Servlet dễ dàng chia sẻ tài nguyên với nhau.

Trong định nghĩa Servlet, vấn đề bảo mật được cài tiến theo nhiều cách. Trước hết, bạn hiểm khi thực thi được các câu lệnh trên Shell với dữ liệu cung cấp bed người dùng mà Java API đã cung cấp với nhũng khả năng truy cập đến tất cả các hàm thông dụng. Bạn có thể sử dựng Java Mail để đọc và gừi mail, kết nối vào các CSDL (thông qua JDBC), tệp lớp ( class) và những lóp liên quan để truy cập .hệ thống tệp, CSDL, RMI, CORBA, Enterprise Java Bean (E JB), … vấn đề bảo mật thông tin sẽ được đề cập chi tiết ở chương 7.