SSM框架中,如何配置不同路径下配置不同404转发路径?

发布于 2022-09-06 02:53:02 字数 54 浏览 16 评论 0

如:
1./admin下404转发一个路径,
2./user下404转发另一个路径

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回忆凄美了谁 2022-09-13 02:53:02

对于找不到Handler来处理某个请求,还是让DispatcherServlet来抛异常,用来处理404.即将DispatcherServlet的throwExceptionIfNoHandlerFound设为true.可在DispatcherServletInitializer(继承自AbstractAnnotationConfigDispatcherServletInitializer的自定义配置类)重写registerDispatcherServlet,或者重写customizeRegistration设置初始化参数.
然后自己写异常处理方法
`
@ControllerAdvice(annotations = {RestController.class})
public class ExceptionReaper {

@ExceptionHandler(value = { NoHandlerFoundException.class })  
@ResponseStatus(HttpStatus.NOT_FOUND)  
public ModelAndView noMapping(Exception exception, WebRequest request) {  
    return  new ModelAndView("error/notFound");  
}  

`

还有种方法
Spring MVC对于url的匹配采用的是一种叫做“最精确匹配的方式”,举个例子

比如我们同时定义了“/test/a”, "/test/*",那么若请求的url结尾为/test/a,那么则会匹配精确的那个,也就是"/test/a"

我们是不是可以利用这个特点来找到那些找不到的页面?

1、首先我们定义一个拦截所有url的规则@requestMapping("*"),那么实际上不存在找不到的页面了,也就是永远不会进入noHandlerFound方法体内

2、后面的步骤和平时一样,为别的请求都配置上@requestMapping

那么请求过来,要么进入我们精确匹配的method(也就是找的到的),要么进入@requestMapping("*)拦截的方法体内(也就是找不到的)

那么我们只要让@requestMapping("*)拦截的这个方法返回一个自定义的404界面就OK了~

而对于404页面选择,判断请求地址就行了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文