将一个简单的hello world servlet编译成.war用于tomcat

Bla*_*man 4 java tomcat

我正在做一些简单的基准测试,我想创建一个显示hello world的简单servlet,我有这个部分:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet{ 
  public void doGet(HttpServletRequest request, 
  HttpServletResponse response)
  throws ServletException,IOException{
  response.setContentType("text/html");
  PrintWriter pw = response.getWriter();
  pw.println("<html>");
  pw.println("<head><title>Hello World</title></title>");
  pw.println("<body>");
  pw.println("<h1>Hello World</h1>");
  pw.println("</body></html>");
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我安装了tomcat的默认安装,在文件夹中:

.../libexec目录/ webapps /下ROOT

我相信我必须删除一个war文件,是否有可能只使用命令行将上面的java类编译成.war文件和编辑器?

Ste*_*nne 5

war文件只是一个zip文件,因此使用适当的目录结构和web.xml,您可以使用命令行工具创建一个.

web.xml至少应包含将URL指向servlet的方法.

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd">
  <servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

此web.xml应位于WEB-INFwar内部命名的文件夹中,并且编译的java类文件应位于WEB-INF/classes

war文件应该放在webapps目录中,而不是ROOT目录中.

Tomcat将找到您的war文件,并将其解压缩.

如果它被命名为"hello.war",则默认上下文名称将为"hello",并在以下位置访问 http://yourhost/hello/