HTTP状态404 - 在调用Servlet时找不到

时间:2014-09-25 10:30:30

标签: java jsp servlets http-status-code-404

当我从JSP页面调用Servlet时,我收到HTTP状态404。

这是web.xml:

<servlet>
    <servlet-name>Register</servlet-name>
    <servlet-class>servlets.dataio.registration.Register</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
</servlet-mapping>

以下是JSP的有效代码:

<form name="admin-form" action="Register" method="POST"> 

错误讯息:

HTTP Status 404 - Not Found

type Status report

message: Not Found

description: The requested resource is not available.

目录结构是:

Web Pages --> Pages --> Registration --> registerpage.jsp

我尝试过清洁和建筑项目。 我正在使用NetBeans IDE和GlassFish服务器

3 个答案:

答案 0 :(得分:1)

尝试:

action="../../Register"

使页面相对于Servlet的位置。

../表示一个目录。根据您发布的目录结构,它是Web Pages下面的两个文件夹,因此您需要两个../来使它相对于您的Servlet所在的位置,即{{1}意思就在<url-pattern>/Register</url-pattern>

之下

答案 1 :(得分:1)

action属性默认使用相对路径,因此如果您的jsp在http://yourHost/yourApp/pathToJsp/registerpage.jsp处可用,那么您的相对servlet路径为http://yourHost/yourApp/pathToJsp/Register,这是不正确的。

您有两种选择:

  • 使用像J.Lucky建议的相对路径 - 但它容易出错,因为你必须在每个jsp中修复它,或者你在目录结构中移动jsp
  • 使用absoulute路径 - 以/开头,但您需要包含您的上下文根名称,如下所示 - /yourContext/Register。如果要避免硬编码上下文根,可以使用request.getContextPath()方法,如action='<%=request.getContextPath()%>/Register'

答案 2 :(得分:0)

尝试动作=“/注册”

此行是'因为消息必须至少为30个字符