Servlets - Bao bì

Cấu trúc ứng dụng web liên quan đến thư mục con WEB-INF là tiêu chuẩn cho tất cả các ứng dụng web Java và được chỉ định bởi đặc tả API của servlet. Đưa ra tên thư mục cấp cao nhất của myapp. Đây là cách cấu trúc thư mục này trông như thế nào:

/myapp
   /images
   /WEB-INF
      /classes
      /lib

Thư mục con WEB-INF chứa bộ mô tả triển khai của ứng dụng, có tên là web.xml. Tất cả các tệp HTML nên được giữ trong thư mục cấp cao nhất là myapp . Đối với người dùng quản trị, bạn sẽ tìm thấy thư mục ROOT là thư mục mẹ.

Tạo Servlet trong gói

Thư mục WEB-INF / class chứa tất cả các lớp servlet và các tệp lớp khác, trong cấu trúc khớp với tên gói của chúng. Ví dụ: Nếu bạn có tên lớp đủ điều kiệncom.myorg.MyServlet, thì lớp servlet này phải được đặt trong thư mục sau:

/myapp/WEB-INF/classes/com/myorg/MyServlet.class

Sau đây là ví dụ để tạo lớp MyServlet với tên gói là com.myorg

// Name your package
package com.myorg;  

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class MyServlet 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 các Servlet trong các gói

Không có gì khác biệt nhiều để biên dịch một lớp có sẵn trong gói. Cách đơn giản nhất là giữ tệp java của bạn ở đường dẫn đủ điều kiện, như đã đề cập ở trên lớp sẽ được giữ trong com.myorg. Bạn cũng cần thêm thư mục này trong CLASSPATH.

Giả sử môi trường của bạn được thiết lập đúng cách, hãy vào <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / thư mục lớp và biên dịch MyServlet.java như sau

$ javac MyServlet.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 MyServlet.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 đóng gói

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 và bạn sẽ cần tạo các mục sau trong web.xml tệp nằm trong <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.myorg.MyServlet</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet</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 gần như đã 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/MyServlettrong 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:

Hello World