Spring MVC 全局异常拦截器 HandlerExceptionResolver
Spring MVC 全局异常拦截器 HandlerExceptionResolver
我这里只对部分请求做验证,无登录时,抛出此异常,拦截后自动跳转到登录页面,具体可以根据自己的业务来具体实现。
@Order 注解一定要加,保证优先级 @Configuration 不做过多解释
如果不加,抛出的异常不会被此拦截,直接会被工程配置的 404、500 之类的异常拦截到。
废话不说,直接上代码!!请自行查阅!
/**
 * 默认是最低优先级,值越小优先级越高
 */
@Order(-1000)
@Configuration
public class NewsLoginException implements HandlerExceptionResolver {
          
   
	private static final Logger LOGGER = LoggerFactory.getLogger(NewsLoginException.class);
	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) {
          
   
		LOGGER.error(e.getMessage(),e);
		if (e instanceOf RuntimeException) {
          
   
			//TODO do something
		}
		return new ModelAndView("/modules/front/login");
	}
} 
项目中的使用 Demo
@GetMapping("/activity/registered")
public String goActivityRegistered(HttpServletRequest request, HttpServletResponse response, Model model) throws RuntimeException {
          
   
	Object ticketId = request.getSession().getAttribute(NewsConstants.MEDIA_LOGIN_TICKET_ID);
	if (ticketId == null) throw new RuntimeException("无效请求!");
	return "";
}
				       
			          
