带有java servlet的错误控制器

带有java servlet的错误控制器,java,servlets,error-handling,Java,Servlets,Error Handling,如何使用java中的servlet制作ErrorController,如Zend Framework for PHP中的ErrorController 现在我有了这个 <servlet> <display-name>ErrorController</display-name> <servlet-name>ErrorController</servlet-name> <servlet-

如何使用java中的servlet制作ErrorController,如Zend Framework for PHP中的ErrorController

现在我有了这个

<servlet>
        <display-name>ErrorController</display-name>
        <servlet-name>ErrorController</servlet-name>
        <servlet-class>project.controller.ErrorController</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ErrorController</servlet-name>
        <url-pattern>/error</url-pattern>
    </servlet-mapping>

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error</location>
    </error-page>

误差控制器
误差控制器
project.controller.ErrorController
误差控制器
/错误
java.lang.Exception
/错误

Servlet是否可能有类似的功能?

我不确定Zend,但在Java/Servlet中,您可以为特定的错误代码定义错误页面(定义进入WEB-INF/WEB.xml):


404
/404.jsp
500
/500.jsp

位置不一定必须是jsp,然后可以由过滤器进行筛选,将用户带到相关控制器。

ErrorController是一个servlet。我想你已经自己回答了你的问题。你同样可以为一个特殊的异常类分配一个错误页。要分配一个来捕获所有可能的抛出,请使用
java.lang.Throwable
。@Sean这当然是一种可能性,但我真的无法想象为什么会有人想通过web.xml处理异常处理。在通用调度器中处理异常并相应地处理它不是更好吗?我倾向于同意。需要记住的一点是,您应该处理来自JSP的错误,这些错误可能在您建立的任何dispatcher框架之外。不过,您可以使用
过滤器
来处理这个问题。如果我没记错的话,这个机制比J2EE1.1时代更古老,那时一切都将是XML和声明性的!您可以使用其中一个或两个。
<error-page>
  <error-code>404</error-code>
  <location>/404.jsp</location>
</error-page>

<error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
</error-page>