当前位置: 首页 > news >正文

中国旅游网站建设wordpress商店如何

中国旅游网站建设,wordpress商店如何,水墨网站模板,广东外贸网站开发目录 Spring Boot 过滤器1.什么是过滤器2.工作机制3.实现过滤器 Spring Boot 拦截器1. 什么是拦截器2. 工作原理3.实现4.拓展(MethodInterceptor 拦截器)实现 过滤器和拦截器区别过滤器和拦截器应用场景过滤器拦截器 Spring Boot 过滤器 1.什么是过滤器 …

目录

    • Spring Boot 过滤器
      • 1.什么是过滤器
      • 2.工作机制
      • 3.实现过滤器
    • Spring Boot 拦截器
      • 1. 什么是拦截器
      • 2. 工作原理
      • 3.实现
      • 4.拓展(MethodInterceptor 拦截器)
        • 实现
    • 过滤器和拦截器区别
    • 过滤器和拦截器应用场景
      • 过滤器
      • 拦截器

Spring Boot 过滤器

在这里插入图片描述

1.什么是过滤器

  1. 过滤器(Filter),是 Servlet 规范规定的,在 Servlet 前执行的。用于拦截和处理 HTTP 请求和响应,可用于身份认证、授权、日志记录和设置字符集(CharacterEncodingFilter)等场景。

  2. 过滤器位于整个请求处理流程的最前端,因此在请求到达 Controller 层前,都会先被过滤器处理。

  3. 过滤器可以拦截多个请求或响应,一个请求或响应也可以被多个过滤器拦截。

2.工作机制

Filter 的生命周期对应的三个关键方法:

方法作用
init()当请求发起是,会调用init()方法初始化Filter实例,仅初始化一次 ,若设置初始化参数时可调用该方法
doFilter()拦截要执行的请求,对请求和响应进行处理
destroy()请求结束时调用该方法销毁Filter的实例

3.实现过滤器

  1. 实现 Filter 接口
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 用于完成 Filter 的初始化Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("过滤器已经拦截成功!!!");// 执行该方法之前,即对用户请求进行预处理;执行该方法之后,即对服务器响应进行后处理。chain.doFilter(request,response);}@Overridepublic void destroy() {// 用于 Filter 销毁前,完成某些资源的回收;Filter.super.destroy();}
}
  1. 启动类添加注解 @ServletComponentScan
  2. 通过@Component和@Order(1)注解可以保证过滤器执行顺序

Spring Boot 拦截器

1. 什么是拦截器

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。

2. 工作原理

SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。所以过滤器、拦截器、service()方法,dispatc()方法的执行顺序应该是这样的
请添加图片描述

3.实现

配置拦截器,实现WebMvcConfigurer接口,加@Configuration注解并重写addInterceptors方法。

@Configuration
public class MyWebConfigurer implements WebMvcConfigurer {@Resourceprivate MyHandlerInterceptor myHandlerInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {List<String> patterns = new ArrayList<>();patterns.add("/test/handlerInterceptor");registry.addInterceptor(myHandlerInterceptor).addPathPatterns(patterns) // 需要拦截的请求.excludePathPatterns(); // 不需要拦截的请求}
}

4.拓展(MethodInterceptor 拦截器)

  1. MethodInterceptor 是 AOP 中的拦截器,它拦截的目标是方法,可以不是 Controller 中的方法。

  2. 在对一些普通的方法上的拦截可以使用该拦截器,这是 HandlerInterceptor 无法实现的。

  3. 可用来进行方法级别的身份认证、授权以及日志记录等,也可基于自定义注解实现一些通用的方法增强功能。

实现

MethodInterceptor 是基于 AOP 实现的,所以根据不同的代理有多种实现方式。

  1. 创建 Interceptor 类,实现MethodInterceptor接口,重写invoke方法,加@Component注解。
@Component
public class MyMethodInterceptor implements MethodInterceptor {@Overridepublic Object invoke(MethodInvocation invocation) throws Throwable {System.out.println("进入拦截,方法执行前,拦截方法是:" + invocation.getMethod().getName());Object result = invocation.proceed();System.out.println("方法执行后");return result;}}
  1. 配置自动代理,加@Configuration注解并创建自动代理BeanNameAutoProxyCreator。
@Configuration
public class MyMethodConfigurer {@Resourceprivate MyMethodInterceptor myMethodInterceptor;@Beanpublic BeanNameAutoProxyCreator beanNameAutoProxyCreator() {// 使用BeanNameAutoProxyCreator来创建代理BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator();// 指定一组需要自动代理的Bean名称,Bean名称可以使用*通配符beanNameAutoProxyCreator.setBeanNames("user*");//设置拦截器名称,这些拦截器是有先后顺序的beanNameAutoProxyCreator.setInterceptorNames("myMethodInterceptor");return beanNameAutoProxyCreator;}}

过滤器和拦截器区别

  1. 过滤器是基于函数回调,拦截器是基于java的反射机制的。

  2. 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器。

  3. 过滤器可以拦截几乎所有的请求(包含对静态资源的请求),而拦截器只拦截action请求(不拦截静态资源请求)。

  4. 过滤器不能访问action上下文、值栈里的对象,拦截器可以访问action上下文、值栈里的对象。

  5. 在action的生命周期中,过滤器只能在容器初始化时被调用一次,拦截器可以多次被调用,而。

  6. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

  7. 拦截器是被包裹在过滤器之中。

过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。

拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。

切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象

过滤器和拦截器应用场景

过滤器

  1. 过滤敏感词汇(防止sql注入)
  2. 设置字符编码
  3. URL级别的权限访问控制
  4. 压缩响应信息

拦截器

  1. 登录验证,判断用户是否登录。
  2. 权限验证,判断用户是否有权限访问资源,如校验token
  3. 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
  4. 处理cookie、本地化、国际化、主题等。
  5. 性能监控,监控请求处理时长等。
  6. 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)
http://www.yayakq.cn/news/893905/

相关文章:

  • 花生壳做的网站北京专业seo
  • 互联网行业现状分析网站优化团队
  • 一流的天津网站建设做脚本网站
  • 太原做手机网站建设网站开发技术工作室
  • 西安建站怎么建设网站是什么
  • 网站浏览成交指标做网站的带宽
  • 网站建设南阳黑龙江骏域建设网站专家
  • 外贸做网站推广株洲在线论坛招聘求职
  • 上海八号桥 网站建设成都活动策划公司
  • 重庆大型的网站建设站多多 福州网站建设
  • 网站是怎样建立的流程是什么yy直播在线观看
  • 要建设一个网站需要准备些什么wordpress加密数据库文件
  • 导购网站怎么建设WordPress下载框插件
  • 德山经济开发区建设局网站wordpress 文件类型
  • 网站策划的流程苏州知名网站制作公司
  • 网站系统管理功能潍坊专业网站建设哪家好
  • 招聘网站做竞品分析交易网站开发合同范本
  • 购物型网站怎么建立阿里云虚拟主机建网站
  • php网站广告管理系统网站建设的工作方法
  • 创新的网站网站404页面源码
  • 做网站卖什么产品利润高怎样创建网站详细步骤
  • 网站模版调用标签教程wordpress seo 链接
  • seo建站系统宣传软文
  • aspnet网站开发实例教程象屿做核放单的网站
  • 网站是asp还是php全国知名vi设计公司
  • 做网站应该用什么镜像网站出售html
  • 如何建设音乐网站seo优化关键词排名
  • 门户网站建设实施方案做网站前期工作
  • 织梦网站做中英文双语言版本电商网站建设包括哪些内容
  • 深圳住房和建设局网站公开招标gzip压缩 wordpress