我在课程register
中有一个servlet p1
。我有一个JSP jsp1.jsp
。我运行JSP文件并看到它,但是当我尝试应用于servlet时,Tomcat显示错误:
HTTP状态404
请求的资源(/ omgtuk / Register)不可用。
的Servlet
@WebServlet("/register")
的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">
<display-name>omgtuk</display-name>
<servlet>
<description></description>
<display-name>register</display-name>
<servlet-name>register</servlet-name>
<servlet-class>p1.register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>jsp1.jsp</welcome-file>
</welcome-file-list>
</web-app>
我正在使用Eclipse。
答案 0 :(得分:11)
请求的资源(/ omgtuk / Register)不可用。
这只是意味着servlet没有侦听/Register
的URL模式。换句话说,您没有@WebServlet("/Register")
。
在您的特定情况下,您在网址中出现了大小写错误。 URL区分大小写。您正在调用/Register
,但您的servlet正在监听/register
。相应地修复您的表单操作。
所以,不应该是这样的:
<form action="Register">
但它应该是这样的:
<form action="register">
或者这个,如果您在无聊的时候碰巧移动JSP,这会更加强大:
<form action="${pageContext.request.contextPath}/register">
无关,请注意您通过课程上的@WebServlet
注释和<servlet>
中的web.xml
条目注册了servlet。这个不对。你应该使用其中一个。 @WebServlet
是注册servlet的新方法,因为Servlet 3.0(Java EE 6)和<servlet>
是注册servlet的旧方法。
摆脱<servlet>
中的整个<servlet-mapping>
和web.xml
。您不需要同时指定两者。确保您正在阅读最新的书籍/教程。 Servlet 3.0已于2009年12月开始存在。
另一个细节是p1
不是一个类,它是一个包。在热衷于Java EE之前,我强烈建议花更多的时间学习基础Java。