Dịch vụ cài đặt Servlet

Trước tiên phải lưu ý rằng việc cài đặt chi tiết các Servlet là thay đổi tuỳ theo từng Web Server khác nhau. Ví dụ, khi ta sử dụng Java Web Server (JWS) 2.0 thì các Servlet dòi hỏi phải được đặt ở thư mục được gọi là servlets trong cây thư mục cài đặt của JWS. Tuy nhiên, ta có thể tạo ra một thư mục riêng, ví dụ myservlet và đặt các Servlet vào đó để tránh xung đột với các Servlet khác.

1. Dịch chương trình Servlet

Dịch các Servlet có thể sử dụng JDK http: / /www, javasoft. cam hoặc các chương trình biên dịch Java khác và thực hiện hoàn toàn giống như đối với các Applet hay chương trình ứng dụng độc lập. Nếu các gói javax. servlet và javax. servlet.http không có ương chương trình biên dịch và cùng không cỏ trong Servlet Engine thỉ phải cài đặt chúng riêng bằng cách nạp từ JSDK (Java Servlet Developrrygnt Kít) và đặt đường dẫn chứa các lớp cùa JSDK trong biến môi trường CLASSPATH cho phù hợp.

Như vậy, để chạy được các chương trình Servlet như trên, ta có thể thực hiện các bước như sau:

  • Cài đặt JSDK (Java Servlet Development Kits)
  • Cài đặt một trong các mô tơ Servlet như đã nêu ờ mục 6.3
  • Dịch chương trình

Có hai cách chính để dịch các chương trình Servlet trong các gói.

+ Cách thứ nhất là đặt CLASSPATH để chì tới thư mục mà ở đó có chứa các Servlet của chủng ta. Ví dụ, JSDK cài đặt ở c:\jsdk2.0, và gói cùa ta có tên là myservlet (thư mục d:\myservlet) chứa các Servlet cần dịch, ở Window ta thực hiện như sau:

DOS> set CLASSPATH=.;C:\jsdk2.0\lib\jsdk.jar;%CLASSPATH%

DOS> cd d:\myservlet

DOS> javac FirstServlet.java

+ Cách thứ hai là dịch các lớp được đặt trong các gói được chì rõ trong câu lệnh dịch. Ví dụ, nếu thư mục cơ sở cài đặt JSDK là c:\jsdk2.0 và gói cùa ta có tên là myservlet (thư mục d:\myservlet) chứa các Servlet cần dịch, ờ Window ta thực hiện như sau:

DOS> set CLASSPATH = . ;C:\jsdk2.0\lib\jsdk. jar;%CLASSPATH% DOS> javac myservlet\FirstServlet.java

Hiển nhiên là trước đó ta phải đặt biến môi trường PATH chỉ tới nơi cài đật chương trình dịch javac.exe. Giả sử J2DK1.4.2 được cài đặt ờ c: \j2sdkl. 4.2, thì biến môi trường PATH được đặt như sau

DOS> set PATH=.;C:\j2sdkl.4.2\bin Đe tiện lợi cho việc dịch các Servlet, ta có thể đặt các biến môi trường như trên vào trong autoexec.bat.

2. Thực hiện Servlet

  1. Với Java Web Server, các Servlet được đặt ò thu mục servlets bên trong cây thư mục cài đặt JWS và để chạy, chúng ta triệu gọi http://host/seĩvIet/ServletName sau khi đã khới động

Chú ý: Thư mục servlets là số nhiều còn địa chỉ URL gọi tới là servlet, số ít. Nếu Servlet của chúng ta là Firs t Servlet đặt ờ gói myservlet thì phài triệụ gọi:

http://host/servlet/mvservlet/FirstServlet

Những Web Server khác có thể qui định cách cài đặt Servlet khác nhau. Phần lớn chúng cho phép sử dụng cách đặt biệt danh (aliase) cho các Servlet sao cho có thể triệu gọi một tệp HTML bất kỳ (any-f ile) ở một thư mục bất kỳ (any-path):

http: //host/anv-D ath/anv-fi 1 e. html

  1. Với Tomcat 5, chúng ta cũng thực hiện tương tự như trên.
  • Đặt các chương trình Java Servlet vào một thư mục, ví dụ

c:\Servlets + JSP

  • Khởi động DOS và viết “javac FirstServlet”
  • Đặt tệp lớp class vào thư mục của Servlet, ví dụ

C:\Tomcat5.5\webapps\ROOT\WEB-INF\classes

  • Khởi động Server: kích đúp vào bat hoặc biểu tượng tomcat5. exe.
  • Triệu gọi Servlet

http://localhost/servlet/FirstServlet

Hoặc

http://localhost:8080/FirstServlet nếu Tomcat được cài đặt ở cổng 8080.

Ví dụ 6.2. Xây dựng một Servlet dơn giản để sinh ra HTML và hiển thị lời chào “Xin chào các bạn” mỗi khi thực hiện.

Phần lớn các Servlet sinh ra các kết quả dạng HTML. Để làm được điều này, chúng ta cần thực hiện theo hai bước:

  • Chi cho trình duyệt biết là ta sẽ gửi thông tin lại bằng Điều này được thực hiện bằng cách đặt kiểu nội dung là

res.setContentType(“text/html”);

  • Thay đổi lệnh println 0 để tạo ra một trang Web hợp lệ với các đối số là các thẻ HTML.

package myservlet; import j ava.io.*; import j avax.servlet.*; import javax.servlet.http.* ;

public class ServletExample extends HttpServlet{

public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, lOException{ res.setContentType(“text/html”);

PrintWriter out = res.getWriter();

out. println (“<!DOCTYPE HTML PUBLIC \”-//W3C//DTD

HTML “Transitional//EN\”>\n” +

“<HTML>\n” +

“<HEADXTITLE>Mời chào</TITLEX/HEAD>\n” + “<BODY>\n” +

“<H1> Xin chào các bạn</Hl>\n” + ”</BODYX/HTML>”) ;

. }

}