interceptor

回炉重铸系列之javaEE基础

核能气质少年 提交于 2020-05-02 14:35:10
这篇文章主要介绍 servlet filter listener interceptor 之 知识点。博文主要从 概念,生命周期,使命介绍其区别。详情如下: 概念 生命周期 使命 servlet servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新装入。(1). 装入:启动服务器时加载Servlet的实例(如果你设置<load-on-startup>的值是一个大于0的数,则tomcat在启动时就会创建servlet,如果没有设置这个属性,则是第一次访问时创建); (2). 初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init方法负责执行完成;(init方法只执行一次) (3). 调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法; (4). 销毁:停止服务器时调用destroy()方法,销毁实例。 接受请求,相应请求 filter filter是一个可以复用的代码片段。它不能产生一个请求或者响应

Java Spring Boot VS .NetCore (二)实现一个过滤器Filter

三世轮回 提交于 2020-05-02 04:15:48
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Java Spring Boot VS .NetCore (三)Ioc容器处理 Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore Java Spring Boot VS .NetCore (五)MyBatis vs EFCore Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml Java Spring Boot VS .NetCore (七) 配置文件 Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag

spring5 源码深度解析----- AOP代理的生成

主宰稳场 提交于 2020-05-01 04:44:59
在获取了所有对应bean的增强后,便可以进行代理的创建了。回到AbstractAutoProxyCreator的wrapIfNecessary方法中,如下所示: 1 protected static final Object[] DO_NOT_PROXY = null ; 2 3 protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) { 4 if (StringUtils.hasLength(beanName) && this .targetSourcedBeans.contains(beanName)) { 5 return bean; 6 } 7 if (Boolean.FALSE.equals( this .advisedBeans.get(cacheKey))) { 8 return bean; 9 } 10 if (isInfrastructureClass(bean.getClass()) || shouldSkip(bean.getClass(), beanName)) { 11 this .advisedBeans.put(cacheKey, Boolean.FALSE); 12 return bean; 13 } 14 15 // Create proxy

Spring Boot使用JWT实现系统登录验证

我的未来我决定 提交于 2020-04-29 20:56:47
简介 什么是JWT(Json Web Token) jwt是为了在网络应用环境间传递声明而执行的一种基于json的开放标准。该token被设计紧凑且安全的,特别适用于SSO场景。 jwt的声明一般被用来在身份提供者和服务提供者之间传递被认证的用户身份信息。 JWT长什么样 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0MDAyIiwiZXhwIjoxNTEwOTcwMjU4fQ._FOqy5l44hODu3DjXh762LNUTLNQH15fdCUerdseDpmSKgkVSCjOyxQNTBKDSh3N-c83_pdEw5t6BdorgRU_kw JWT的构成 JWT通常由三部分组成,头信息(header)、消息体(body)、签名(signature) 头信息指定了JWT使用的签名算法 header={alg=HS512} 消息体包含了JWT的意图,exp为令牌过期时间 body={sub=testUsername, exp=1510886546} 签名通过私钥生成 signature=kwq8a_B6WMqHOrEi-gFR5rRPmPL7qoShZJn0VFfXpXc1Yfw6BfVrliAP9C4UnXlqD3wRXO3mw_DDIdglN5lH9Q 使用springboot集成jwt jwt官网 springboot官网 引用依赖 <

SpringBoot整合Mybatis关于分页查询的方法

送分小仙女□ 提交于 2020-04-28 18:57:20
最近公司在用到SpringBoot整合Mybatis时当web端页面数据增多时需要使用分页查询以方便来展示数据。本人对分页查询进行了一些步骤的总结,希望能够帮助到有需要的博友。如有更好的方式,也希望评论留言,本人以作更好的改进。 SpringBoot+Mybatis+PageHelper实现分页 以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。 使用pageHelper实现分页查询其实非常简单,共三步: 一、导入依赖; 推荐博友可以上maven中央仓库去找合适的版本进行PageHelper的依赖导入 maven中央仓库地址: https://mvnrepository.com 进入maven中央仓库后在搜索框搜索PageHelper,选择合适的版本 pagehelper支持多种数据库:Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等 在这里我们选择pageHelper-spring-boot-starter ,点击进入后根据项目需要选择版本,在这里我选择1.2.12的最新版本 复制maven依赖,添加至项目的pom.xml中 至此,PageHelper插件就引入完成。 二、添加配置; aplication.yml或aplication.xml中添加配置: 配置项说明: 1

SpringBoot(11) SpringBoot自定义拦截器

依然范特西╮ 提交于 2020-04-28 12:09:34
自定义拦截器共两步:第一:注册。第二:定义拦截器。 一、注册 @Configuration 继承WebMvcConfigurationAdapter(SpringBoot2.X之前旧版本) 旧版本代码 1 @Configuration 2 public class CustomOldWebMvcConfigurer extends WebMvcConfigurerAdapter { 3 4 @Override 5 public void addInterceptors(InterceptorRegistry registry) { 6 7 registry.addInterceptor( new LoginIntercepter()).addPathPatterns("/api/" ); 8 9 super .addInterceptors(registry); 10 } 11 12 } SpringBoot2.X 新版本配置拦截器 implements WebMvcConfigurer 新版本代码 1 @Configuration 2 public class CustomWebMvcConfigurer implements WebMvcConfigurer { 3 4 @Override 5 public void addInterceptors

context-param 监听器 过滤器 servlet 拦截器的区别

旧巷老猫 提交于 2020-04-28 11:24:19
前言: 一句话概括启动的顺序 context param上下文参数——>listener监听器——>filter过滤器——>servlet——>intercept拦截器                      生命周期 context-param上下文参数 当容器tomcat启动的时候会读取web.xml中的<context-param>标签和<listener>标签并初始化ServletContext(上下文)对象(ServletContext代表当前web项目,当前web项目中的所有内容都共享此对象) 然后容器tomcat将<context-param>中的内容解析为键值对赋予ServletContext(这也就是为什么我们可以通过context-param的键获得context-param的值) 之后容器创建<listener></listener>中的类实例,即创建监听器,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,通过在这个方法中的参数获得ServletContext = ServletContextEvent.getServletContext(); 最后得到context-param的值 = ServletContext.getInitParameter("context-param的键");

springBoot2.X---过滤器,监听器,拦截器

泄露秘密 提交于 2020-04-28 11:23:36
过滤器,监听器,拦截器 一、画图理解 过滤器(filter),监听器(listener),拦截器(Interceptor)。 通过两幅图我们可以理解拦截器和过滤器的特点 1、过滤器   过滤器是在请求进入tomcat容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 理解上面这句话我们就可以知道,进入servlet之前,主要是两个参数:ServletRequest,ServletResponse 那我们得到这两个测试可以干哪些事呢? 我们可以通过ServletRequest得到HttpServletRequest,此时你就可以对请求或响应(Request、Response)那就可以对对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现 URL级别的权限访问控制、过滤敏感词汇、压缩响应信息、字符集统一 等一些高级功能。 它主要用于对用户请求进行预处理 ,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。。 它是随你的web应用启动而启动的,只初始化一次

axios 全攻略之基本介绍与使用(GET 与 POST)

我怕爱的太早我们不能终老 提交于 2020-04-28 02:24:38
axios axios 是一个基于 Promise 的 HTTP 客户端,专门为浏览器和 node.js 服务 Vue 2.0 官方推荐使用 axios 来代替原来的 Vue request,所以这里介绍一下 axios 的功能和基本的使用方法,希望能够对各位所有帮助。^_^ 功能 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换 JSON 数据格式 客户端支持防范 XSRF 攻击 浏览器支持 axios 能够支持 IE7 以上的 IE 版本,同时能够支持大部分主流的浏览器,需要注意的是,你的浏览器需要支持 Promise,才能够使用 axios。所以比较好的做法是先安装 polyfill,然后再使用 axios。 安装 Using npm: $ npm install axios Using bower: $ bower install axios Using cdn: <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 使用 这里以 Vue 为例:在 NPM 中安装 axios 之后,需要在 main.js 文件中引用 package import axios

mybatis源码学习:插件定义+执行流程责任链

安稳与你 提交于 2020-04-27 15:20:12
目录 一、自定义插件流程 二、测试插件 三、源码分析 1、inteceptor在Configuration中的注册 2、基于责任链的设计模式 3、基于动态代理的plugin 4、拦截方法的intercept(invocation) 四、插件开发插件pagehelper 1、引入相关依赖 2、全局配置 3、测试分页 五、插件总结 前文传送门: mybatis源码学习:从SqlSessionFactory到代理对象的生成 mybatis源码学习:一级缓存和二级缓存分析 mybatis源码学习:基于动态代理实现查询全过程 一、自定义插件流程 自定义插件,实现Interceptor接口。 实现intercept、plugin和setProperties方法。 使用@Intercepts注解完成插件签名。 在主配置文件注册插件。 /** * 自定义插件 * Intercepts:完成插件签名,告诉mybatis当前插件拦截哪个对象的哪个方法 * * @author Summerday */ @Intercepts({ @Signature(type = StatementHandler.class, method = "parameterize", args = Statement.class) }) public class MyPlugin implements Interceptor