Tomcat上的Servlet配置

时间:2014-03-07 12:00:03

标签: java tomcat

我使用Netbeans和Glassfish服务器开发了一个WebApplication。我想在Tomcat服务器上部署它。但是我无法在Tomcat上运行servlet。我做了以下

  1. 在Tomcat的ROOT目录中创建了一个文件夹“fti”
  2. 将index.jsp放在fti目录中,我可以通过浏览器访问
  3. 我在“fti”文件夹中创建了WEB-INF文件夹,并将web.xml文件放入其中。
  4. 我在“WEB-INF”文件夹中创建了classes文件夹,并将编译好的java文件test.class放在其中。
  5. 我尝试通过浏览器调用servlet,尝试访问/ fti / test并将错误视为“请求的资源(/ fti / test)不可用。”
  6. 我能够使用与Netbeans和glassfish服务器相同的web.xml文件运行相同的servlet

    我的test.java文件:

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class test extends HttpServlet {
    
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
    
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet test</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet test </h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }
    
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    
    
    @Override
    public String getServletInfo() {
        return "Short description";
    }
    
    }
    

    我的web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    
    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>test</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    

3 个答案:

答案 0 :(得分:2)

您将“ROOT”webapp与顶级文档目录混淆。 fti需要成为ROOT的兄弟,才能按照您的期望行事,而不是孩子。

答案 1 :(得分:1)

servlet或任何REST请求路径不仅仅是远程文件系统。在您的web.xml中,您告诉您的容器servlet的名称为test且其路径为test/,因此请尝试拨打test而不是fti/test

答案 2 :(得分:0)

文件夹fti应位于您可以在安装Tomcat的同一文件夹中找到的文件夹webapps下。此外,课程test.class应位于webapps/fti/WEB_INF/classes。您应该可以通过/fti/test

访问它