📜  Servlet-包装

📅  最后修改于: 2020-11-12 05:45:47             🧑  作者: Mango


涉及WEB-INF子目录的Web应用程序结构是所有Java Web应用程序的标准,并由Servlet API规范指定。给定myapp的顶级目录名称。这是这个目录结构的样子-

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

WEB-INF子目录包含名为web.xml的应用程序的部署描述符。所有HTML文件都应保存在顶层目录myapp中。对于管理员用户,您将找到ROOT目录作为父目录。

在包中创建Servlet

WEB-INF / classes目录包含所有servlet类和其他类文件,其结构与它们的包名相匹配。例如,如果您具有com.myorg.MyServlet的完全限定的类名,则此Servlet类必须位于以下目录中-

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

以下是使用包名称com.myorg创建MyServlet类的示例

// 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("

" + message + "

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

在包中编译Servlet

编译包中可用的类没有什么不同。最简单的方法是将Java文件保存在完全限定的路径中,如上所述,此类将保存在com.myorg中。您还需要在CLASSPATH中添加此目录。

假设您的环境已正确设置,请进入 / webapps / ROOT / WEB-INF / classes目录并按如下所示编译MyServlet.java。

$ javac MyServlet.java

如果servlet依赖于任何其他库,则还必须在CLASSPATH上包括那些JAR文件。我仅包含servlet-api.jar JAR文件,因为我没有在Hello World程序中使用任何其他库。

该命令行使用Sun Microsystems Java软件开发套件(JDK)随附的内置javac编译器。为了使此命令正常工作,您必须在PATH环境变量中包括所使用的Java SDK的位置。

如果一切顺利,上述编译将在同一目录中生成MyServlet.class文件。下一节将解释如何在生产中部署已编译的servlet。

打包的Servlet部署

默认情况下,一个servlet应用程序位于路径 / webapps / ROOT中,并且该类文件位于 / webapps / ROOT / WEB-INF / classes中。

如果您具有com.myorg.MyServlet的完全合格的类名称,则此Servlet类必须位于WEB-INF / classes / com / myorg / MyServlet.class中,并且需要在位于以下位置的web.xml文件中创建以下条目:在 / webapps / ROOT / WEB-INF /中


   MyServlet
   com.myorg.MyServlet

 

   MyServlet
   /MyServlet

以上要在web.xml文件中的标记内创建的条目。该表中可能已经有各种条目可用,但是没关系。

差不多完成了,现在让我们使用 \ bin \ startup.bat(在Windows上)或 /bin/startup.sh(在Linux / Solaris等上)启动tomcat服务器,最后键入浏览器地址栏中的http:// localhost:8080 / MyServlet 。如果一切顺利,您将获得以下结果-

Hello World