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

wordpress还是shpify太原关键词优化软件

wordpress还是shpify,太原关键词优化软件,免费素材网站排行榜,河北做网站电话过滤器(Filter)监听器(Listener)拦截器(Interceptor)关注点web请求系统级别参数、对象Action(部分web请求)如何实现函数回调事件Java反射机制(动态代理)应用场…
过滤器(Filter)监听器(Listener)拦截器(Interceptor)
关注点web请求系统级别参数、对象Action(部分web请求)
如何实现函数回调事件Java反射机制(动态代理)
应用场景设置字符编码统计网站在线人数拦截未登录用户
URL级别的权限访问控制清除过期session审计日志
过滤敏感词汇
压缩响应信息
是否依赖servlet容器依赖依赖不依赖
servlet提供的支持Filter接口ServletContextListerner抽象接口Action(部分web请求)
HttpSessionListener抽象接口HandlerinterceptorAdapter类
Spring提供的支持HandlerInterceptor接口
级别系统级系统级非系统级

Interceptor

在这里插入图片描述

拦截器是基于Java反射机制(动态代理)来实现的;可以控制请求的控制器和方法,但控制不了请求方法里的参数(用于处理页面提交的请求响应并进行处理,如国际化,主题更换,过滤等)。

一般说到拦截器都是基于Spring框架下,自定义拦截器可以实现HandlerInterceptor接口或继承抽象类HandlerInterceptorAdapter,并重写3个方法即可。

public interface HandlerInterceptor {// preHandle请求执行前执行default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}// postHandler请求结束后执行,需preHandle方法返回true才执行default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}// afterCompletion是视图渲染完成后才执行,需preHandle返回true,常用于清理资源等工作default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {}
}

抽象类HandlerInterceptorAdapter实现AsyncHandlerInterceptor,而AsyncHandlerInterceptor继承HandlerInterceptor,并增加方法afterConcurrentHandlingStarted

public interface AsyncHandlerInterceptor extends HandlerInterceptor {//default void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {}
}

注:HandlerInterceptorAdapter在Spring 5.3版本被标记为废弃。

无论是哪种方式,都需要添加配置使之生效:

@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {// DemoInterceptorregistry.addInterceptor(new DemoInterceptor()).addPathPatterns("/**");super.addInterceptors(registry);}
}

另外Spring框架提供很多继承HandlerInterceptorAdapter的常用拦截器类,如:

  1. UserRoleAuthorizationInterceptor,实现用户登录认证的拦截功能,如果当前用户没有通过认证,会报403错误
  2. LocaleChangeInterceptor
  3. ThemeChangeInterceptor:6.0版本被废弃
  4. ResourceUrlProviderExposingInterceptor
  5. ConversionServiceExposingInterceptor
  6. UriTemplateVariablesHandlerInterceptor

Filter

在这里插入图片描述

jakarta.servlet.Filter是Java原有接口:

public interface Filter {default void init(FilterConfig filterConfig) throws ServletException {}	void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;default void destroy() {}
}

FilterChain,把所有的过滤器都放在FilterChain里边,责任链模式。JavaDoc给出几种过滤器的作用:

  1. Authentication Filters,即用户访问权限过滤
  2. Logging and Auditing Filters,日志过滤,可以记录特殊用户的特殊请求的记录等
  3. Image conversion Filters
  4. Data compression Filters
  5. Encryption Filters
  6. Tokenizing Filters
  7. Filters that trigger resource access events
  8. XSL/T filters
  9. Mime-type chain Filter

Listener

在这里插入图片描述

EventListener空实现,标记接口。

/*** A tagging interface that all event listener interfaces must extend.* @since JDK1.1*/
public interface EventListener {
}

监听器就是一个实现特定接口的程序。用于监听一个Java对象的方法调用或者属性变化。常用的监听器接口有三类:

1.Application级

对Servlet上下文进行监听,用于监听ServletContext对象的创建和删除以及属性的添加、删除、修改等操作,有两个接口类:

  • ServletContextAttributeListener源码:
public interface ServletContextAttributeListener extends EventListener {// 当程序把一个属性存入application范围时触发该方法void attributeAdded(ServletContextAttributeEvent var1);// 当程序把一个属性从application范围删除时触发该方法void attributeRemoved(ServletContextAttributeEvent var1);// 当程序替换application范围内的属性时将触发该方法void attributeReplaced(ServletContextAttributeEvent var1);
}
  • ServletContextListener,当需要在处理任何客户端请求之前进行某个操作,并且希望在整个应用过程中该操作一直可用,此时ServletContextListener接口将会起到作用。其源码:
public interface ServletContextListener extends EventListener {// 创建ServletContext时,即Web应用程序初始化后激发该方法void contextInitialized(ServletContextEvent var1);// 销毁ServletContext时,即将结束销毁激发该方法void contextDestroyed(ServletContextEvent var1);
}

2.Session级

对HTTP会话进行监听,包括:session的创建和销毁,session中属性的增加、删除、修改,session的active和passivate情况等,接口主要有4个:

  • HttpSessionAttributeListener 该接口用于监听HttpSession(session)范围内属性的改变,源码:
public interface HttpSessionAttributeListener extends EventListener {// 当在session中添加对象时触发此操作void attributeAdded(HttpSessionBindingEvent var1);// 当在session中删除对象时触发此操作void attributeRemoved(HttpSessionBindingEvent var1);// 当在session中修改对象时触发此操作void attributeReplaced(HttpSessionBindingEvent var1);
}
  • HttpSessionListener 该接口用于监听session的创建和销毁过程,源码:
public interface HttpSessionListener extends EventListener {// 用户与服务器的会话开始、创建时时触发该方法void sessionCreated(HttpSessionEvent var1);// 用户与服务器的会话断开、销毁时触发该方法void sessionDestroyed(HttpSessionEvent var1);
}

一般情况下,HttpSessionActivationListener和HttpSessionBindingListener一起使用,这两个监听器比较特殊,实现这两个接口的类不需要在web.xml中进行注册,被钝化的JavaBean对象会被持久化到存储设备中,活化的JavaBean对象会被从存储设备中恢复,前提是该JavaBean对象实现Serializable接口。

  • HttpSessionActivationListener 监听Active、unactive的事件,源码:
public interface HttpSessionActivationListener extends EventListener {// 当绑定到HttpSession对象中的对象将要随HttpSession对象被钝化之前,web服务器调用该对象的此方法void sessionWillPassivate(HttpSessionEvent var1);// 当绑定到HttpSession对象中的对象将要随HttpSession对象被活化之后,web服务器调用该对象的此方法void sessionDidActivate(HttpSessionEvent var1);
}
  • HttpSessionBindingListener 监听被绑定到Session中和从Session中删除的事件:
public interface HttpSessionBindingListener extends EventListener {// 当对象被绑定到HttpSession对象中时,web服务器调用该对象的此方法,从而对象被设置到session中 void valueBound(HttpSessionBindingEvent var1);// 当对象从HttpSession对象中解除绑定时,web服务器调用该对象的此方法,从而对象从session中被移除void valueUnbound(HttpSessionBindingEvent var1);
}

3.request级

对客户端请求进行监听,监听用户的请求和request范围内属性的变化,接口主要有2个:

  • ServletRequestAttributeListener源码:
// 用于监听request范围内属性的变化
public interface ServletRequestAttributeListener extends EventListener {// 当程序向request范围内添加属性时触发该方法void attributeAdded(ServletRequestAttributeEvent var1);// 当程序在request范围内删除属性时触发该方法void attributeRemoved(ServletRequestAttributeEvent var1);// 当程序在request范围内的属性被替换或修改时触发该方法void attributeReplaced(ServletRequestAttributeEvent var1);
}
  • ServletRequestListener源码:
public interface ServletRequestListener extends EventListener {// 用户请求到达、被初始化时触发该方法void requestDestroyed(ServletRequestEvent var1);// 用户请求结束、被销毁时触发该方法void requestInitialized(ServletRequestEvent var1);
}

区别

拦截器和过滤器

功能比较类似,过滤器和拦截器都是AOP的具体实现。区别:

拦截器是基于Java反射(动态代理)机制,过滤器是基于函数回调;
拦截器不依赖与servlet容器,过滤器依赖于servlet容器;
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用;
拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问;
在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次;
拦截器可以获取IOC容器中的各个bean,而过滤器就不行,在拦截器里注入一个service,可以调用业务逻辑;
拦截器只能过滤请求,过滤器过滤范围较大;
使用的主要是函数回调,和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。
一个请求过来,先由过滤器处理,看程序是否受理该请求。过滤器放过后,程序中的拦截器进行处理, 处理完后进入被AOP动态代理重新编译过的主要业务类进行处理。
Filter,Interceptor,Aspect 实际上都是对Aop的具体实现。都是对业务逻辑的提取。都可以实现权限检查,日志记录。不同的是使用的范围不同,规范不同,深度不同。

过滤器和监听器

都是用于增强Web应用的功能和扩展性的重要组件,但它们的作用对象、触发时机、接口实现以及用途有一定的差异

作用对象:过滤器作用于Servlet、JSP或其他Web资源的请求和响应过程。它可以对请求进行预处理,也可以对响应进行后处理,例如修改请求、过滤请求、修改响应、过滤响应等。
监听器则是用于监听Web应用中的事件,如ServletContext、HttpSession、ServletRequest等对象的创建、销毁、属性变更等事件。
触发时机:过滤器在请求进入Servlet之前进行处理,也可以在响应返回给客户端之前进行处理,因此它可以用来实现诸如权限控制、字符编码转换、日志记录等功能。
监听器则是在特定事件发生时触发,例如 ServletContext 初始化、销毁,HttpSession 创建、销毁,ServletRequest 属性变更等。
接口实现:过滤器实现jakarta.servlet.Filter接口,重写doFilter()方法来处理请求和响应。
监听器实现jakarta.servlet.ServletContextListener、jakarta.servlet.http.HttpSessionListener、jakarta.servlet.ServletRequestListener等接口,根据需要监听相应的事件。
用途:过滤器常用于对请求和响应进行过滤处理,如设置字符编码、身份验证、日志记录等。
监听器常用于监听Web应用中的事件,如初始化操作、销毁操作、属性变更等,用于执行特定的逻辑。

http://www.zhongyajixie.com/news/22514.html

相关文章:

  • 西宁做网站是什么信息发布平台推广有哪些
  • 哪家公司做网站正规东莞有哪些做推广的网站
  • 个人网站模板html免费重庆seo网站
  • 泰安网站建设怎么样线上推广哪个平台最好
  • 淘宝优惠券网站怎么做的免费的精准引流软件
  • 在网上做游戏网站违法吗semantic
  • 网络舆情监测分析系统免费关键词优化排名软件
  • 中国空间站图片爱站网爱情电影网
  • 做网站上传视频某网站seo诊断分析
  • 建设的网站后台会自动退出是正常的武汉百度推广外包
  • 传媒有限公司免费网站关键词搜索引擎工具爱站
  • 免费b站推广网站动漫免费推广方法
  • 重庆机械加工网网站的seo 如何优化
  • 合肥市建设网站seo团队
  • 网站建站图片seo关键字优化
  • 做网站的那个语言好友情链接怎么交换
  • 做文字logo的网站注册推广赚钱一个40元
  • 网站上线前如何测试知乎关键词排名优化
  • 做网站是干嘛社群运营
  • 做网页设计可以用哪些软件网站关键词优化报价
  • 违反建设投诉网站举报黄山seo公司
  • 重庆网站推广公司哪家好优化大师会员兑换码
  • 为什么网站建设比商场要贵网络推广主要做什么
  • 平台门户网站建设网络推广合同
  • 网站开发成本预算营销策略怎么写
  • 企业网站建设排名资讯百度如何推广网站
  • 山西专业制作网站商品推广与营销的方式
  • 怎么查看网页的html代码湖北短视频seo营销
  • 石家庄网站建设德信互联科技有限公司服务营销
  • 将wordpress压缩包解压至一个空文件夹_并上传它网站推广优化的方法