0

我在 Eclipse 中有一个动态 Web 项目,它使用注释来映射 servlet,如下所示:

@WebServlet("/LoginController")
public class LoginController extends HttpServlet {
    ....
}

我也有使用这些 servlet 的 jsp 页面,如下所示:

<form method="post" action="LoginController">

这一切都像 char 一样工作,直到我决定为错误404500. 在 Google 上稍作搜索将我带到java2s,我发现我必须修改web.xml文件以指定错误页面。但是我的项目在目录下没有web.xml文件WEB-INF(顺便说一下,我使用 Eclipse Indigo 作为 IDE 和 Tomcat 7.0.14)。所以我添加了一个如下:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <error-page>
        <error-code>
            404
        </error-code>
        <location>
            /404.html
        </location>
    </error-page>

    <error-page>
        <error-code>
            500
        </error-code>
        <location>
            /500.html
        </location>
    </error-page>
</web-app>

这,引入了一个新问题。我的 servlet 不再工作了!我所有的 JSP 都工作正常。但是对我的 servlet 的所有请求都将我带到 404 错误页面。例如,当 JSP 工作正常时,我可以获得一个登录表单。但是,当我提交我的登录表单时,LoginController它会弹出 404 错误页面。

我认为可以通过使用web.xml文件进行servlet映射而不是WebServlet注释来解决。但是有没有办法使用WebServlet注释并提供错误页面?web.xml如果可以避免显示错误页面,我会很高兴。另外,我不喜欢编辑tomcat的任何配置文件。那么,我该如何解决这个问题呢?

4

1 回答 1

3

删除 doc 类型,并使用以下 web-app 元素声明:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

您使用的 doc 类型将您的 web-app 声明为 2.3 webapp,它不支持注释。

于 2012-01-01T13:08:59.040 回答