找不到404:访问部署在Tomcat

时间:2017-05-02 16:50:58

标签: java spring jsp tomcat servlets

我跟着一个非常简单的例子来自Head First Servlets& JSP一开始,但我遇到了一个问题。当我尝试访问webapps / ch1 / web-inf /中名为Ch1Servlet的servlet时,映射到url-pattern:/ Serv1,tomcat返回ERROR 404:

HTTP Status 404 - /ch1/Serv1

我在我的浏览器的地址栏中输入了localhost:8080,它显示了Tomcat的主页,这对服务器来说似乎没问题。 然后我创建了一个名为Ch1Servlet的servlet。这是它的样子:

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

public class Ch1Servlet extends HttpServlet{
    public void doGet(HttpServletRequest request,
        HttpServletResponse response) throws IOException{
        PrintWriter out=response.getWriter();
        java.util.Date today=new java.util.Date();
        out.println("<html><body><h1>Today</h1>"+today+"</body></html>");
    }
}

接下来,需要一个web.xml配置文件。所以就是这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <Servlet>
        <Servlet-name>Ch1Servlet</Servlet-name>
        <Servlet-class>Ch1Servlet</Servlet-class>
    </Servlet>

    <Servlet-mapping>
        <Servlet-name>Ch1Servlet</Servlet-name>
        <url-pattern>/Serv1</url-pattern>
    </Servlet-mapping>
</web-app>

编译完Ch1Servlet.java之后,我得到了一个放在WEB-INF / classes中的类文件,并将web.xml放在WEB-INF中。层次结构是这样的:webapps / ch1 / WEB-INF。

它建议我们可以使用url:http://localhost:8080/ch1/Serv1访问servlet并在屏幕上显示HTML页面。但遗憾的是,ERROR 404在那里被发现了。

2 个答案:

答案 0 :(得分:1)

web.xml中的所有xml元素都应以小写字母开头。

答案 1 :(得分:-1)

web.xml中,您没有定义班级的完整路径:

<Servlet>
    <Servlet-name>Ch1Servlet</Servlet-name>
    <Servlet-class>com.test.Ch1Servlet</Servlet-class>
</Servlet> 

com.test.Ch1Servlet类的包名称。请使用课程的完整路径。