SpringBoot学习笔记12--springboot中使用拦截器

1.编写拦截器:实现HandlerInterceptor接口

拦截器1:拦截并放行

public class OneInterceptor implements HandlerInterceptor{
 /**
  * 在请求处理之前调用(controller方法调用之前)
  */
 public boolean preHandle(HttpServletRequest request,
   HttpServletResponse response, Object handler) throws Exception {
  System.out.println("被OneInterceptor拦截,并放行........");
  //true表示放行  false表示不放行
  return true;
 }
 /**
  * 在请求处理之后调用,但是在视图被渲染之前调用(Controller方法调用之后)
  */
 public void postHandle(HttpServletRequest request,
   HttpServletResponse response, Object handler,
   ModelAndView modelAndView) throws Exception {
  // TODO Auto-generated method stub
  
 }
 /**
  * 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行
  * 主要用于进行资源清理工作
  */
 public void afterCompletion(HttpServletRequest request,
   HttpServletResponse response, Object handler, Exception ex)
   throws Exception {
  // TODO Auto-generated method stub
  
 }
}

拦截器2:拦截不放行

public class TwoInterceptor implements HandlerInterceptor{
 public boolean preHandle(HttpServletRequest request,
   HttpServletResponse response, Object handler) throws Exception {
  if(true){
   returnErrorResponse(response, JSONResult.errorMsg("被TwoInterceptor拦截,不放行......"));
  }
  System.out.println("被TwoInterceptor拦截,不放行......");
  return false;
 }
 
 public void postHandle(HttpServletRequest request,
   HttpServletResponse response, Object handler,
   ModelAndView modelAndView) throws Exception {
  // TODO Auto-generated method stub
 }
 
 public void afterCompletion(HttpServletRequest request,
   HttpServletResponse response, Object handler, Exception ex)
   throws Exception {
  // TODO Auto-generated method stub
 }
 
 public void returnErrorResponse(HttpServletResponse response, JSONResult result) throws IOException, UnsupportedEncodingException {
  OutputStream out=null;
  try{
      response.setCharacterEncoding("utf-8");
      response.setContentType("text/json");
      out = response.getOutputStream();
      out.write(JsonUtils.objectToJson(result).getBytes("utf-8"));
      out.flush();
  } finally{
      if(out!=null){
          out.close();
      }
  }
 }
}
2.创建Controller--分别对应两个拦截器



3.配置拦截器@Configuration,创建拦截适配器,任何继承WebMvcConfigurerAdapter类,重写addInterceptors方法,然后为每个拦截器通过addPathPatterns方法设置拦截的路径

注意:我们可以根据需要来选择重写某些方法,方法如下:source-->Override/Implement Methods...即可看到如下:


4.浏览器访问http://localhost:8088/SpringBoot/one/index,这是由于这个路径被第一个拦截器拦截并放行,又被第二个拦截器拦截并不放行

访问http://localhost:8088/SpringBoot/two/index,这是由于这个路径被第二个拦截器拦截并不放行




猜你喜欢

转载自blog.csdn.net/qq_20788055/article/details/80487464
今日推荐