为什么别人的网页有登录拦截而你没有,这就教你学会它(上)

简介: 1.简介2.自定义拦截器

1.简介


SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。


拦截器和过滤器的区别在于拦截器使AOP思想的具体应用


  • 过滤器


  • servlet规范中的一部分,任何java web工程都可以使用
  • url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
  • 需要重写方法


  • 拦截器


  • SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
  • 拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的
  • 不需要重写方法


2.自定义拦截器


>Moduleweb💻


>web.xmlapplicationContext.xmlcontroller💻


>💻


@RestController
public class TestController {
    @GetMapping("/t1")
    public String test(){
        System.out.println("TestController-->test()执行了");
        return "ok";
    }
}

添加Artifact中的lib,以及配置Tomcat,启动测试出现,证明Spring配置好了


微信图片_20211231134605.png


>💻


package com.hxl.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
    //在请求处理的方法之前执行
    //return true;执行下一个拦截器
    //如果返回false就不执行下一个拦截器
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("------------处理前------------");
        return true;
    }
    //在请求处理方法执行之后执行
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("------------处理后------------");
    }
    //在dispatcherServlet处理后执行,做清理工作.
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("------------清理------------");
    }
}


>applicationContext.xml💻


<!--关于拦截器的配置-->
<mvc:interceptors>
    <mvc:interceptor>
        <!--/** 包括路径及其子路径-->
        <!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截-->
        <!--/admin/** 拦截的是/admin/下的所有-->
        <mvc:mapping path="/**"/>
        <!--bean配置的就是拦截器-->
        <bean class="com.hxl.config.MyInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>


前面的我们都不动,运行,我们可以看到效果


微信图片_20211231134705.png


那么接下来就用一个实例来体验一下拦截器(登录)


在WEB-INF下的所有页面或者资源,只能通过controller或者servlet进行访问


相关文章
|
Java 数据库 Android开发
【专栏】Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
534 5
|
定位技术 Android开发
uniapp获取wifi连接状态
uniapp获取wifi连接状态
1248 0
FL Studio目前最新版本V21中文版下载安装包
FL Studio 21是一款功能强大的音乐编曲制作软件。尽管你可能没有接触过音乐制作,也能通过fl Studio 21,撰写,整理,录制,编辑,混合,掌握和制作出专业的品质音乐。FL Studio对电脑及相应配置要求不高,可以在不同设备中灵活应用。
10299 0
|
前端开发
uni-app中使用 async + await 实现异步请求同步化
uni-app中使用 async + await 实现异步请求同步化
3822 0
uni-app中使用 async + await 实现异步请求同步化
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
1769 1
|
JavaScript
Uniapp实现时间选择器
Uniapp实现时间选择器
970 0
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
388 4
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
API Docker 容器
如何免费获取 ChatGPT API Key?
上篇文章介绍了NextChat项目,只需配置ChatGPT API Key即可拥有私人ChatGPT网页应用。本文继续介绍免费获取API Key的来源——GPT_API_free,一个拥有13.6K Star的Github开源项目。需用Github账号绑定领取Key,支持gpt-3.5-turbo、embedding、gpt-4,但gpt-4每天限3次调用。GPT_API_free也提供付费版API,以支持项目持续运营。
7748 0
如何免费获取 ChatGPT API Key?
|
缓存 NoSQL 数据库
【高并发】秒杀系统设计思路
【高并发】秒杀系统设计思路
365 0
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
本文将以iOS技术博主身份,分享解决使用无密码的.p12文件发布应用时遇到的问题,并介绍如何以带密码的方式重新导出.p12文件的方法。通过本文提供的步骤,开发者可以顺利完成证书的发布流程。