Springboot中拦截器的使用

① 创建ErrorInterceptor类,implements HandlerInterceptor

package com.tenement.utils.interceptor;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
/**
 * 自定义拦截器
 * 
 * @author wk
 * @create 2018/02/27
 */
@Controller
public class ErrorInterceptor implements HandlerInterceptor {
 
	private static final Log logger = LogFactory.getLog(ErrorInterceptor.class);
 
	/*
	 * preHandle方法
	 * 
	 *
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		logger.info("【-MyInterceptor1,在请求处理之前进行调用(controller方法调用之前)-】");
		return true;
	}
 
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		logger.info("【-MyInterceptor1,请求处理之后进行调用,但是在视图被渲染之前(controller方法调用之后)-】");
		if(response.getStatus()==500){
			modelAndView.setViewName("/view/base/errorpage/500.html");
			/*
			 * setViewName(String viewName);
			 * 为此ModelAndView设置视图名称,由DispatcherServlet通过ViewResolver解析。 将覆盖任何预先存在的视图名称或视图。
			 */
		}else if(response.getStatus()==404){
			modelAndView.setViewName("/view/base/errorpage/404.html");
		}
	}
 
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		logger.info("【-MyInterceptor1,在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要用于资源清理工作)-】");
	}
 
}

② 创建MyWebAppConfigurer extends WebMvcConfigurerAdapter

package com.tenement.utils.interceptor;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
 
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new ErrorInterceptor()).addPathPatterns("/**");
		super.addInterceptors(registry);
	}
	/*
	 * 对页面的静态资源也会进行拦截,导致异常
	 * 
	 */
}

 

转载于:https://my.oschina.net/ydsakyclguozi/blog/2872579

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值