springmvc通过controller层自定义404页面已经springmvc匹配规则

本文介绍了一种在SpringMVC中自定义404页面的方法,通过@Controller注解配合@RequestMapping(/**)实现对不存在路径的统一处理,并可以根据URL中特定字符串跳转至不同错误页面。

通常在springmvc中可以直接通过web.xml配置404自定义的页面,但是缺少灵活性

比如如果需要根据映射地址去跳转到不同的页面,那么则在配置文件就不能满足

也了解过直接改写springmvc抛出异常的方法,但是并没有找到直接跳转自定义404页面的相关方法,最后终于找到了一种简单的,可以直接通过controller层判断的方法

@Controller
public class DefaultHandlerExceptionResolver {
	@RequestMapping("/**")
	public String noHandleMethod(ModelAndView view, HttpServletRequest request)
			
	{
	    String url = request.getRequestURI();
	    int result = url.indexOf("需要判断的含有的代码");
	    if(result != -1) {
	    	return "jsp-en/error/error";
	    }
	    return "jsp/error/error";
	}
}

通过url中含有字符串的不同,可以跳转到不同的404页面

具体解析:

springmvc的路径匹配规则

/**代表任意层次

@RequestMapping("/**")

/*代表一层

@RequestMapping("/*")

以上为匹配所有路径

但是为什么我的需求是报404,找不到页面的逻辑用的匹配所有路径呢?

因为springmvc匹配规则是谁更准确匹配谁,/**是springmvc中最不准确的,所以所有存在的路径会被优先匹配到,剩下的则是没有此路径的,这些都将被/**路径下的方法处理。

更具体的springmvc匹配规则:

https://juejin.im/post/5aab5f5cf265da23826dbb18

转载于:https://my.oschina.net/u/3829307/blog/3077352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值