zoukankan      html  css  js  c++  java
  • 过滤器和拦截器的区别

    Spring 的拦截器与Servlet的过滤器有相似之处,二者都是AOP编程思想的体现,都可以实现权限的检查,日志记录等

      ① 使用范围不同:  Filter是Servlet规范规定,只能用在web程序中,而拦截器,除了web程序,也可以用于Application,Swing程序中

      ②  规范不同  Filter是Servlet规范中定义的  是Servlet容器支持的,而拦截器是在spring容器内,是Spring框架支持的

      ③  使用资源不同  同其他代码块一样,拦截器也是sprring的组件,归spring管理,配置spring文件中,因此能使用Spring中任何资源,对象,例如对象,数据源,事务管理,通过IOC注入到拦截器即可:Filter则不能

      ④  深度不同,Filter只在Servlet前后起作用,而拦截器能够深入到方法前后,异常抛出前后,spring架构程序,优先使用拦截器

    详细的区别:

      ①:  拦截器是基于java的反射机制,而过滤器是基于函数回调

      ②: 拦截器不依赖servlet容器,过滤器依赖servlet容器

      ③ 拦截器只能对action请求起作用,过滤器对所有请求起作用

      ④  拦截器可以访问action上下文,值栈里的对象,而过滤器不能

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

      ⑥拦截器可以获取IOC容器各个bean,而过滤器不能,

      过滤器

    @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            System.out.println("before...");
            chain.doFilter(request, response);
            System.out.println("after...");
        }

    拦截器

     @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("preHandle");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("postHandle");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("afterCompletion");
        }

     

    SpringMVC的机制是由同一个Servlet来分发请求给不同Controller,其实这一步实在Servlet的service()方法中执行

    原文链接  https://www.cnblogs.com/panxuejun/p/7715917.html

    java中getAttribute和getParameter的区别

      getAttribute表示从request范围获取属性值,必须先set设置属性,才能获取到值

    getParameter表示接受参数,参数为页面提交的数据,包括表单中数据,或者url后参数

  • 相关阅读:
    mysql多源复制,多主一从复制
    Linux初始化环境安装
    sql2014 错误:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除NoSync 订阅,然后重新创建它们
    Jmeter之模拟文件上传、下载接口操作--转载
    配置元件 之 用户自定义的变量--转载
    多态中成员函数的特点--转载
    Jmeter:cup监控、脚本录制、执行布置----转载
    Selenium JavascriptExecutor 详解
    selenium+java自动化测试环境搭建介绍--转载
    IO实时监控命令iostat详解-转载
  • 原文地址:https://www.cnblogs.com/developerxiaofeng/p/9078332.html
Copyright © 2011-2022 走看看