2012-01-01 58 views
0

我在日食动态Web项目,该项目使用注解来这样的映射的servlet:添加错误页面区块在Tomcat中的所有servlet 7

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

我也有使用这些小服务程序,类似这样的jsp页面:

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

它所有的工作就像一个字符,直到我决定添加错误404500错误页面。 Google上的一些搜索带我到java2s,我发现我必须修改web.xml文件来指定错误页面。但我的项目没有在WEB-INF目录下的web.xml文件(顺便说一句,我使用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的任何配置文件。那么,我该如何解决这个问题呢?

回答

3

删除的文档类型,使用下面的webapp元素声明:

<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"> 

您使用的文档类型声明你的web应用的web应用程序2.3,它没有支持注释。

+0

这解决了我的问题。谢谢。 +1! – Jomoos 2012-01-01 13:20:06