SpringBoot自定义拦截器
1、创建自定义拦截器类
-
package cn.woniu.myInterseption;
-
-
import org.springframework.lang.Nullable;
-
import org.springframework.web.bind.annotation.ExceptionHandler;
-
import org.springframework.web.servlet.HandlerInterceptor;
-
import org.springframework.web.servlet.ModelAndView;
-
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
-
public class MyIntercepror implements HandlerInterceptor {
-
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-
System.out.println("在controller之前执行!!!!");
-
return true;
-
//HandlerInterceptor.super.preHandle(request, response, handler);
-
}
-
-
/**
-
* value: 只有抛出指定异常类型,才会被该方法捕捉到
-
* @return
-
*/
-
-
public ModelAndView mdv(){
-
ModelAndView modelAndView = new ModelAndView();
-
modelAndView.setViewName("error1");
-
return modelAndView;
-
}
-
-
/**
-
* 在业务代码执行完了但是还没有执行试图解析器,意思就是还没有返回页面前执行
-
* * @param request
-
* @param response
-
* @param handler
-
* @param modelAndView
-
* @throws Exception
-
*/
-
-
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
-
System.out.println("返回页面前");
-
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
-
}
-
-
/**
-
* 页面已经返回后执行
-
* @param request
-
* @param response
-
* @param handler
-
* @param ex
-
* @throws Exception
-
*/
-
-
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
-
System.out.println("页面返回后!!!!");
-
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
-
}
-
}
-
-
-
2、配置拦截器
创建springmvc配置类
-
package cn.woniu.configuration;
-
-
import cn.woniu.myInterseption.MyIntercepror;
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-
public class MyMvcHandler implements WebMvcConfigurer {
-
public void addInterceptors(InterceptorRegistry registry) {
-
registry.addInterceptor(new MyIntercepror())//将我们自定义拦截器
-
.addPathPatterns("/**")//所有路径都拦截
-
.excludePathPatterns("/","/login");//配置不需要拦截的url
-
}
-
}
配置拦截器后会造成页面静态资源无法加载的问题
-
修改配置文件
#配置mvc静态资源目录 不配置默认为"/**" spring.mvc.static-path-pattern=/static/**
- 修改页面静态资源引用
要加上"/satic/"
-
<link href='/static/bootstrap/css/bootstrap.css' rel="stylesheet">
-
<script type="text/javascript" src='/static/js/jquery-3.5.1.js'></script>
-
<script type="text/javascript" src='/static/bootstrap/js/bootstrap.js'></script>
- 修改拦截器注册方法
返回类
-
package cn.woniu.controller;
-
-
import cn.woniu.entity.Users;
-
import org.apache.ibatis.jdbc.Null;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.RestController;
-
-
-
public class HandlerController {
-
-
public String testExcepition(){
-
int i =1/0;
-
// Users users=null;
-
// users.getId();
-
throw new NullPointerException();
-
//return "111";
-
}
-
-
-
-
-
public String login(){
-
-
return "login";
-
}
-
-
public String index(){
-
System.out.println("执行controller方法");
-
return "index";
-
}
-
}
访问login,显示拦截
释放通行后,得到返回值
我们在哪里控制放行和关闭,就是拦截器第一个方法的返回值,true为放行,false为关闭
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaaaee
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01