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

精品课程网站设计说明范文爱山东app下载注册流程

精品课程网站设计说明范文,爱山东app下载注册流程,icann域名注册商,注册网络公司经营范围大全一、什么是过滤器与拦截器#xff1f; 1.2 拦截器#xff08;Interceptor#xff09; java过滤器指的是在java中起到过滤的作用的一个方法。可以在一个请求到达servlet之前#xff0c;将其截取进行逻辑判断#xff0c;然后决定是否放行到请求的servlet#xff1b;也可以在…一、什么是过滤器与拦截器 1.2 拦截器Interceptor java过滤器指的是在java中起到过滤的作用的一个方法。可以在一个请求到达servlet之前将其截取进行逻辑判断然后决定是否放行到请求的servlet也可以在一个response到达客户端之前截取结果进行逻辑判断然后决定是否允许返回给客户端。 filter过滤器 有如下几个种类功能 用户授权的filterfilter负责判断用户是否有权限请求该页面。给予过滤判断日志的filter截取某个用户在本网站上的所有请求。记录轨迹负责解码的filter规定处理本次请求的解码方式。 需要注意的是一个filter过滤器可以加在多个servlet控制器上当然多个filter过滤器也是可以加在一个servlet控制器上的。 由此也是可以看出来我们使用filter往往是对一些公共的操作进行处理。例如判断用户权限解码本次请求等。还比如我们的web应用中某些页面是需要用户登录后才能访问的以往我们都是在每个servlet页面加上判断控制导致代码冗余。有了filter我们可以定义一个实现了filter的过滤器让需要判断是否登录的页面都加上这么一个过滤器可以大大降低代码的冗余程度 1.2 拦截器Interceptor java里的拦截器是动态拦截Action调用的对象它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码也可以在一个Action执行前阻止其执行同时也提供了一种可以提取Action中可重用部分代码的方式。 作用域动态拦截Action调用的对象也就是我们的controller层 在实现上基于Java的反射机制属于面向切面编程(AOP)的一种运用。 由于拦截器是基于web框架的调用因此可以使用Spring的依赖注入(DI)进行一些业务操作同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。 二、过滤器与拦截器的区别2.1 实现原理不同 过滤器的实现基于回调函数拦截器基于Java的反射机制【动态代理】实现。 2.2 使用范围不同 过滤器是Servlet的规范需要实现javax.servlet.Filter接口Filter使用需要依赖于Tomcat等容器。拦截器是Spring组件定义在org.springframework.web.servlet包下由Spring容器管理【又有更加丰富的生缪那个周期处理方法细粒度且能够使用Spring中的资源】不依赖Tomcat等容器。 2.3 触发时机不同 过滤器对请求在进入后Servlet之前或之后进行处理。拦截器对请求在handler【Controller】前后进行处理。 2.4 执行顺序不同 执行顺序 Filter 处理中 - Interceptor 前置 - 我是controller - Interceptor 处理中 - Interceptor 处理后 当有两个过滤器或拦截器时 过滤器 每一次都将chain对象传入达到最后接口回调的效果类似函数的堆栈调用。 拦截器 preHandle1 - preHande2 - 【Controller】 - postHandle2 - postHandle1 - afterCompletion2 - afterComplention1 preHandle按照注册顺序后两个与注册顺序相反。 一个拦截器的preHandle为false则之后的所有拦截器都不会执行。一个拦截器的preHandle为true则这个拦截器的triggerAfterCompletion一定会执行。只有所有的拦截器preHandler都为true也就是正常执行postHandle才会执行。 2.5 控制执行顺序方式不同 实际开发过程中会出现多个过滤器或拦截器同时存在的情况不过有时我们希望某个过滤器或拦截器能优先执行就涉及到它们的执行顺序。 过滤器用Order注解控制执行顺序通过Order控制过滤器的级别值越小级别越高越先执行。 Order(Ordered.HIGHEST_PRECEDENCE) Component public class MyFilter2 implements Filter {} 拦截器默认的执行顺序就是它的注册顺序也可以通过Order手动设置控制值越小越先执行。 Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor2()).addPathPatterns(/**).order(2);registry.addInterceptor(new MyInterceptor1()).addPathPatterns(/**).order(1);registry.addInterceptor(new MyInterceptor()).addPathPatterns(/**).order(3);} 三、过滤器与拦截器的实现3.1 过滤器实现 过滤器的配置比较简单直接实现Filter 接口即可也可以通过WebFilter注解实现对特定URL拦截看到Filter 接口中定义了三个方法。 init() 该方法在容器启动初始化过滤器时被调用它在 Filter 的整个生命周期只会被调用一次。注意这个方法必须执行成功否则过滤器会不起作用。doFilter() 容器中的每一次请求都会调用该方法 FilterChain 用来调用下一个过滤器 Filter。destroy() 当容器销毁 过滤器实例时调用该方法一般在方法中销毁或关闭资源在过滤器 Filter 的整个生命周期也只会被调用一次 Component public class MyFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(Filter 前置);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(Filter 处理中);filterChain.doFilter(servletRequest, servletResponse);}Overridepublic void destroy() {System.out.println(Filter 后置);} } 3.2 拦截器实现 拦截器它是链式调用一个应用中可以同时存在多个拦截器Interceptor 一个请求也可以触发多个拦截器 而每个拦截器的调用会依据它的声明顺序依次执行。首先编写一个简单的拦截器处理类请求的拦截是通过HandlerInterceptor 来实现看到HandlerInterceptor 接口中也定义了三个方法。 preHandle() 这个方法将在请求处理之前进行调用。注意如果该方法的返回值为false ,将视为当前请求结束不仅自身的拦截器会失效还会导致其他的拦截器也不再执行。postHandle()只有在 preHandle() 方法返回值为true 时才会执行。会在Controller 中的方法调用之后DispatcherServlet 返回渲染视图之前被调用。 有意思的是postHandle() 方法被调用的顺序跟 preHandle() 是相反的先声明的拦截器 preHandle() 方法先执行而postHandle()方法反而会后执行。afterCompletion()只有在 preHandle() 方法返回值为true 时才会执行。在整个请求结束之后 DispatcherServlet 渲染了对应的视图之后执行。 Component public class MyInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(Interceptor 前置);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(Interceptor 处理中);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(Interceptor 后置);} } 将自定义好的拦截器处理类进行注册并通过addPathPatterns、excludePathPatterns等属性设置需要拦截或需要排除的 URL。 Configuration public class MyMvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns(/**);registry.addInterceptor(new MyInterceptor1()).addPathPatterns(/**);} }
http://www.dnsts.com.cn/news/226657.html

相关文章:

  • 网站建设京icp备apmserv安装wordpress
  • 国内外网站建设2017网页版网易云游戏
  • 制造企业网站建设搜索引擎调价平台哪个好
  • 网站模板凡建站长安公司网站设计
  • 如何用VS2017做网站摄影网站开发的意义
  • 营销型网站制作平台九江网站排名
  • 广东广实建设有限公司网站教育品牌加盟网站建设
  • 邹城网站建设哪家便宜找建站公司
  • 鲜花网站建设店朝阳公司做网站
  • 国内网站开发公司深圳做网站公司多少钱
  • 耒阳市建设局网站网上申报系统
  • 上海网站建设 报价如何提高网站的功能性建设
  • 企业网站 开源东莞凤岗网站建设制作
  • 网站在百度突然搜不到了物联网学什么
  • 做推广的网站带宽需要多少合适东莞 网站制作
  • 下载教学设计的网站网站备案一般要多久
  • 网站语言从域名到网站建设完成的流程
  • 莆田做网站公司温州做网站哪儿
  • 网站动态页面打不开龙之向导的发展前景
  • 佛山市建设局网站百度直接打开
  • 网站超链接用什么网站顶部图片代码
  • 网站自适应框架用织梦建设网站的步骤
  • 石家庄网站建设求职简历深圳影视广告制作预算
  • 做纯静态网站怎么样官方网站建设投标书
  • erp网站开发科技术语
  • 网站建站程序信息网查询
  • 泰州网站建设制作怎么把自己做的网站挂到外网上
  • 专业的家居网站建设wordpress管理员 404
  • 怎么找合适的网站开发怎样做网站seo优化
  • 企业网站的最高形态是综合型网站谷歌网站怎么做排名