【问题标题】:calling spring controller from web.xml (exception-type)从 web.xml 调用 spring 控制器(异常类型)
【发布时间】:2013-04-19 08:48:32
【问题描述】:

我需要知道是否有任何方法可以从以下位置从web.xml 调用弹簧控制器:

<error-page>
    <exception-type>org.demo.exceptions.InvalidSessionException</exception-type>
    <location>/login.jsp</location>
</error-page>

我创建了一个名为InvaliSessionException 的自定义异常类, 通常我们从&lt;location&gt;标签调用一些jsp页面,但我需要做的是调用登录控制器,例如auth/login,即&lt;location&gt;/auth/login&lt;/location&gt;

有什么方法可以实现吗?

InvaliSessionException.java

public class InvalidSessionException extends NullPointerException 
{
    private static final long serialVersionUID = 1L;

public String getMessage()
{
    return "No user logged in.";
}

public int getExceptionType()
{
    return -1;
}
}

【问题讨论】:

  • 从那个错误jsp,你能重定向到映射到登录控制器的URL吗?
  • @Noob 甚至,如果我们可以在 WebContent 目录下调用一些 jsp,那也可以,因为我的自定义异常是从控制器正确抛出的,但如上所述,它没有被 web.xml 捕获。我有一个 jsp,我在其中使用如下元标记重定向到我的登录控制器:&lt;meta http-equiv="REFRESH" content="0;url=${applicationScope.contextPath}/auth/login"&gt;&lt;/HEAD&gt;

标签: java spring-mvc web.xml


【解决方案1】:

执行此操作的首选方法是在 Spring 上下文中添加“全局异常处理程序”,而不是尝试从 web.xml 重新进入 Spring 上下文。

您可以通过在上下文中配置 org.springframework.web.servlet.handler.SimpleMappingExceptionResolver bean 来实现这一点。使用此解析器应处理的异常列表设置 exceptionMappings 属性,并为每个异常提及应向用户显示的视图。

这使设计保持整洁和可维护。

【讨论】:

  • 谢谢,似乎是通过上下文处理异常的好方法。
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 2018-11-11
  • 2013-08-11
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 2013-03-11
相关资源
最近更新 更多