我跟着一个非常简单的例子来自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在那里被发现了。
答案 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
类的包名称。请使用课程的完整路径。