处理Spring中的404错误?

这是我将未映射的请求重定向到404页面的代码

@RequestMapping("/**") public ModelAndView redirect() { ModelAndView mv = new ModelAndView(); mv.setViewName("errorPage"); return mv; } 

上面的代码工作正常,但问题是像css和js文件这样的web资源也进入这个重定向方法,并且它没有加载任何文件。 但我已经在我的调度程序servlet中有这个代码,但是spring控制器没有识别这个资源映射。

  

所以我在请求映射中尝试了一些正则表达式来否定资源url这样的东西

 @RequestMapping("/{^(?!.*resources/**)}**") public ModelAndView redirect() { ModelAndView mv = new ModelAndView(); mv.setViewName("errorPage"); return mv; } 

但这并没有按预期工作。所以,如果有人能帮助它会很棒:)

我找到了处理404(未映射的链接)的解决方案,我使用SimpleUrlHandlerMapping来执行此操作。

我将以下代码添加到我的调度程序servlet .xml中

           errorController      

com.xyz.controller.ErrorController类

 public class ErrorController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub ModelAndView mv = new ModelAndView(); mv.setViewName("errorPage"); return mv; } } 

我发现了以下原因

@RequestMapping("/**")使用RequestHandlerMapping

  

使用SimpleUrlHandlerMapping

RequestHandlerMapping优先于SimpleUrlHandlerMapping,因此这就是我的情况下所有资源请求进入redirect方法的原因。

所以我只是将@RequestMapping("/**")请求更改为SimpleUrlHandlerMapping,方法是将其配置为上面在我的dipatcher servlet中给出的bean,并在最后映射它并解决了问题。

还要将以下代码添加到web.xml中

   404 /WEB-INF/jsp/error.jsp  

现在这个简单的解决方案可用于将所有未映射的请求(即404错误)重定向到错误页面:)