3. Springboot快速回顾(拦截器的使用)

本文将提供一个案例,回顾如何在springboot中使用拦截器。

首先明白为何使用拦截器,拦截的是什么?
比如你设计了一个网站,为这个网站设计了一个登陆界面后,希望在登录界面进行身份验证,进入系统。但我可以直接访目标url,绕过登陆界面,直接进入首页。

因此需要设置只能访问登录的url,禁止直接访问其他的url。这就需要依靠拦截器设置一下。
在这里插入图片描述
此图就解释了拦截器拦截的就是url地址,设置哪些路径不能直接访问,更安全。

对测试案例的介绍:提供两个url(登陆和首页),演示如何设置禁止访问首页的url

项目结构
在这里插入图片描述

1 定义controler层

@controller
public class test(){
	@RequestMapping("/oa/login")
	@ResponseBody
	public String login(){
		Systems.out.println("这是登陆界面");
		return "登录界面";
	}

    @RequestMapping("/oa/index")
	@ResponseBody
	public String login(){
		Systems.out.println("这是首页");
		return "进入首页";
	}
}

2 设置拦截器顺序

public LoginInterceptor implement HandlerInterceptor(){
 /**
     * preHandle(): 在业务处理器处理请求之前被调用
     * @param request
     * @param response
     * @param handler  拦截器对象,因此我们需要创建一个拦截器对象传给参数
     * @return false 拦截成功 ,看到空白界面
     *         true  不拦截,正常访问
     * @throws Exception
     */
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){
	Systems.out.println("在启动前拦截");
	return false;
	
	}
}

3 设置拦截规则

public class Myappconfig implement WebMvcConfigurer(){

//@Configuration说明:
// 声明类Myappconfig是一个配置类
@Configuration

//接口WebMvcConfigurer说明:
//本来应该在xml文件中配置MVC相关的东西(如配置拦截器);但是springboot简化成了一个MVC类,调用方法进行相关配置
//比如配置MVC的拦截器,重写addInterceptors()
public class Myappconfig implements WebMvcConfigurer {

    /**
     * addInterceptor(拦截器对象):拦截器注册类提供的方法
     * @param registry 拦截器注册类对象
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        System.out.println("读取配置类");
        HandlerInterceptor handlerInterceptor = new LoginInterceptor();

        //设置拦截地址,拦截localhost:8080/user/**
        String[] path = {"/user/**"};
        //设置不拦截的地址 不拦截localhost:8080/user/login
        String[] excludepath = {"/user/login"};

        //拦截器注册类提供的方法
        registry.addInterceptor(handlerInterceptor).addPathPatterns(path).excludePathPatterns(excludepath);
    }
                                                         
}

4 运行结果

可以直接访问(未拦截)
在这里插入图片描述
访问到空白界面(已拦截)----------LoginInterceptor 类返回值是flase
在这里插入图片描述
可以直接范围(取消拦截)--------------LoginInterceptor 类返回值是ture
在这里插入图片描述

5 总结

对拦截器的学习,可以重点关注实现逻辑,设置拦截器顺序与设置拦截器规则,这里面涉及到了两个心类。没有什么新注解需要过多关注的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值