Servlets - Ví dụ

Servlet là các lớp Java phục vụ các yêu cầu HTTP và triển khai javax.servlet.Servletgiao diện. Các nhà phát triển ứng dụng web thường viết các servlet mở rộng javax.servlet.http.HttpServlet, một lớp trừu tượng triển khai giao diện Servlet và được thiết kế đặc biệt để xử lý các yêu cầu HTTP.

Mã mẫu

Sau đây là cấu trúc mã nguồn mẫu của một ví dụ về servlet để hiển thị Hello World -

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Extend HttpServlet class
public class HelloWorld extends HttpServlet {
 
   private String message;

   public void init() throws ServletException {
      // Do required initialization
      message = "Hello World";
   }

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");

      // Actual logic goes here.
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
   }

   public void destroy() {
      // do nothing.
   }
}

Biên dịch một Servlet

Hãy để chúng tôi tạo một tệp có tên HelloWorld.java với mã hiển thị ở trên. Đặt tệp này tại C: \ ServletDevel (trong Windows) hoặc tại / usr / ServletDevel (trong Unix). Vị trí đường dẫn này phải được thêm vào CLASSPATH trước khi tiếp tục.

Giả sử môi trường của bạn được thiết lập đúng cách, hãy vào ServletDevel thư mục và biên dịch HelloWorld.java như sau:

$ javac HelloWorld.java

Nếu servlet phụ thuộc vào bất kỳ thư viện nào khác, bạn cũng phải bao gồm các tệp JAR đó trên CLASSPATH của mình. Tôi chỉ bao gồm tệp JAR của servlet-api.jar vì tôi không sử dụng bất kỳ thư viện nào khác trong chương trình Hello World.

Dòng lệnh này sử dụng trình biên dịch javac tích hợp đi kèm với Bộ phát triển phần mềm Java Sun Microsystems (JDK). Để lệnh này hoạt động bình thường, bạn phải bao gồm vị trí của Java SDK mà bạn đang sử dụng trong biến môi trường PATH.

Nếu mọi thứ suôn sẻ, phần biên dịch trên sẽ tạo ra HelloWorld.classtập tin trong cùng một thư mục. Phần tiếp theo sẽ giải thích cách một servlet đã biên dịch sẽ được triển khai trong sản xuất.

Triển khai Servlet

Theo mặc định, ứng dụng servlet được đặt tại đường dẫn <Tomcat-installationdirectory> / webapps / ROOT và tệp lớp sẽ nằm trong các lớp <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /.

Nếu bạn có tên lớp đủ điều kiện com.myorg.MyServlet, thì lớp servlet này phải được đặt trong WEB-INF / class / com / myorg / MyServlet.class.

Bây giờ, hãy để chúng tôi sao chép HelloWorld.class vào các lớp <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / và tạo các mục sau trong web.xml tệp nằm trong <Tomcat-installation-directory> / webapps / ROOT / WEB-INF /

<servlet>
   <servlet-name>HelloWorld</servlet-name>
   <servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>HelloWorld</servlet-name>
   <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

Các mục trên sẽ được tạo bên trong các thẻ <web-app> ... </web-app> có trong tệp web.xml. Có thể có nhiều mục khác nhau trong bảng này đã có sẵn, nhưng đừng bận tâm.

Bạn sắp hoàn tất, bây giờ hãy để chúng tôi khởi động máy chủ tomcat bằng cách sử dụng <Tomcat-installationdirectory> \ bin \ startup.bat (trên Windows) hoặc <Tomcat-installationdirectory> /bin/startup.sh (trên Linux / Solaris, v.v.) và cuối cùng nhập http://localhost:8080/HelloWorldtrong hộp địa chỉ của trình duyệt. Nếu mọi thứ suôn sẻ, bạn sẽ nhận được kết quả sau