使用spring+处理错误;servlet规范

使用spring+处理错误;servlet规范,spring,error-handling,spring-mvc,error-reporting,Spring,Error Handling,Spring Mvc,Error Reporting,我有一个web应用程序(2.5 servlet规范),它有一个spring dispatcherservlet来处理/error/*上的任何内容,还有一个错误页面,配置为将该页面路由到/error/ 大概是这样的: <servlet> <servlet-name>errorServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherS

我有一个web应用程序(2.5 servlet规范),它有一个spring dispatcherservlet来处理/error/*上的任何内容,还有一个错误页面,配置为将该页面路由到/error/ 大概是这样的:

<servlet>
    <servlet-name>errorServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>errorServlet</servlet-name>
    <url-pattern>/erorr/*</url-pattern>
</servlet-mapping>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/erorr/</location>
</error-page>

错误servlet
org.springframework.web.servlet.DispatcherServlet
1.
错误servlet
/厄洛尔/*
java.lang.Throwable
/厄洛尔/
以及errorServlet-servelt.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
    <context:component-scan base-package="some.base.package"/>
    <bean id="simpleUrlController" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/*">errorController</prop>
            </props>
        </property>
    </bean>
    <bean id="errorController" class="ErrorController">
        <property name="formView" value="formView"/>
        <property name="commandClass" value="Error"/>
        <property name="commandName" value="errorNAMe"/>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

误差控制器
我需要以下方面的帮助:

  • 这是否是解决错误的最佳方法
  • 我知道有一个SimpleMappingExceptionResolver,我可以在我的配置中声明它……但是我在某处读到,这个类很好,只有来自spring控制器的异常,而不是其他异常
  • 我在目前正在开发的一个应用程序中使用了这种方法,它似乎工作得很好
  • 这是真的,但没关系。如果它是一个web应用程序,抛出的任何异常最终都会冒泡到顶部,应该是Spring控制器。然后,它将根据您的配置从那里得到处理,无论是转发到另一个页面还是让您的应用程序爆炸
  • 这是一个很好的基础教程;如果你在谷歌上搜索,还有其他的:


    编辑:除了重定向到错误页面,您还可以将这些异常放在数据库中,以便列出最常见的异常。Joel和Jeff提到他们这样做是为了StackOverflow,而这个列表成为他们要修复的bug列表的一部分。

    您当前的方法有效吗?你是想替换它,还是只是在寻找创意?一个更具体的问题会更好。您错误地键入了/erorr/*和/erorr/。。。在您的XML中是这样的?@victor就这个问题而言,这并不重要。他想知道这是否是一个好方法。@victor是的,我想这是一个输入错误。.但是应用程序在上面的配置下运行良好@skaffman是的,它工作正常:我正在寻找使其恰到好处(没有更多也没有更少的工程设计)感谢Nalandial…关于将异常放入db…好吧…我正在磁盘上创建一个日志文件…并有一个批处理作业扫描它,并为支持人员创建一个报告。原因是我不想依赖任何外部系统(因为它们也可能会失败…但也可能是我变得偏执了…:-))不,你是对的,我只是想作为一个简单的例子来说明你可以做什么。事实上,有一个.NET框架为您提供了这种奇特的东西,我想也有一个用于Java的框架,但我不记得它的名字了。它可能在Joel和Jeff之前播客之一的show notes/transcript wiki中。