`
wxinpeng
  • 浏览: 590806 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Struts2中过滤器,拦截器,监听器他们之间有什么区别?

阅读更多

1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

 

 

org.apache.struts2.dispatcher.FilterDispatcher的四个功能

 

org.apache.struts2.dispatcher.FilterDispatcherStruts2的主要的Filter,负责四个方面的功能:
      (1)
执行Actions
        (2)
清除
ActionContext
        (3)
维护静态内容

        (4)
清除request生命周期内的XWorkinterceptors
               
另注:该过滤器应该过滤所有的请求URL。一般被设置为
/*.(过滤所有的请求!)
   
具体:

        (1)
执行Actions
           
过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,
然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则Action的输出将不会被装饰。

        (2)
清除ActionContext
           
过滤器为了确保内存溢出,会自动的清除ActionContext。这可能会存在一些问题,在和其它的框架集成时,例如SiteMeshActionContextCleanUp提供了怎么处理这些问题的一些信息。

        (3)
维护静态内容
           
过滤器也会维护在Struts2中使用的一些公共的静态的内容,例如JavaScript文件,CSS文件等。搜索/struts/*范围内的请求,然后将/struts/后面的值映射到一些struts的公共包中,也可以在你的类路径中搜索。默认情况下会去查找以下包: org.apache.struts2.static.template。这样你只用请求/struts/xhtml/styles.cssXHTML UI主题默认的样式表将会被返回。同样,AJAX UI组件需要的JavaScript文件,也可以在org.apache.struts2.static包中被找到。如果你想加入其它被搜索的包,在web.xml设置filter时,通过给"actionPackages"初始参数一个逗号隔开的包列表值来设定。
            
需注意的是:他会暴露一些比较敏感的信息例如,properites文件中的数据库连接信息。
    
注:过滤器支持以下初始参数:
         config -
被调入的逗号隔开的XML文件列表。
         actionPackages -
actions扫描的逗号隔开的packages列表。
         configProviders -
逗号分隔的实现了ConfigurationProvider接口(建造Configuration时被使用)的实现类。
         *
任意的struts常量。
    
通过重载createDispatcher()方法,可以自定义dispather
    
    
属性列表:
         (1)actionMapper
:通过注入,提供一个ActionMapper实例。
         (2)dispatcher
:暴露给子类一个Dispatcher实例。
         (3)encoding
:存储StrutsConstants.STRUTS_I18N_ENCODING的设置。
         (4)filterConfig
:通过初始参数,提供一个FilterConfig实例。
         (5)lastModifiedCal
:在缓存静态content,提供一个格化的日期用于设定头信息。
         (6)log
:提供一个logging实例。
         (7)patchPrefixs
:存储静态资源的路径前缀信息。
         (8)serveStatic
:存储StrutsConstants.STRUTS_SERVE_STATIC_CONTENT的设置。
         (9)serveStaticBrowserCache
:存储StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE的设置。
    
方法列表:
         (1)copy(InputStream input, OutputStream output)
:从input复制数据到output
         (2)createDispatcher(FilterConfig filterConfig)
:创建默认的dispatcher对象,如果需要的话,子类可以重载此方法,自定义一个dispatcher对象。
         (3)destory()
:调用dispatcher.cleanup(),依次释放本地线程,销毁dispatcher对象。
         (4)doFilter(ServletRequest request, ServeltResponse response, FilterChain chain)
:处理一个action或处理一个请求的静态内容。
         (5)findInputStream(String name, String packagePrefix)
:搜索类路径下的静态资源。
         (6)findStaticResoruce(String name, HttpServletRequest request, HttpServletResponse response)
:搜索静态的资源,直接复制到相应response的头信息中。
         (7)getContentType(String name)
:获取指定资源的contentType
         (8)getFilterConfig()
:获取FilterConfig实例。
         (9)getServletContext()
:给WebLogic的一些版本提供一个工作区。

        (9)init(FilterConfig filterCongfig):创建默认的dispatcher对象和设置静态资源的默认包信息来初始化filter。
         (10)parse(String packages):返回一个数组通过解析一个指定逗号分隔的packages列表。
         (11)prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response):对给定的request对象进行封装返回一个封装HttpServletRequest对象。例如显示的处理multipart数据。
         (12)setMapper(ActionMapper actionMapper)
         (13)setEncoding(String val)
         (14)setServeStaticContent(String val)
         (15)setServeStaticBrowserCache(String val)

分享到:
评论
1 楼 liuxiwu123 2012-03-27  
              :id

相关推荐

    JavaWeb中Struts2拦截器深入分析(一)

    拦截器与Servlet中的过滤器虽然在功能上有相似之处,但它们在设计和使用上存在明显的区别。 1. **过滤器 VS 拦截器** - 过滤器是Servlet规范的一部分,主要用于对HTTP请求和响应进行预处理和后处理,比如字符编码...

    java过滤器、监听器拦截器原理个人总结.pdf

    Java 过滤器、监听器拦截器原理个人总结 Java 过滤器是 Java Servlet 规范中的一种机制,用于对请求和响应进行过滤。过滤器可以实现用户身份验证、日志记录、数据压缩等功能。创建一个过滤器需要两个步骤:创建 ...

    Struts2的监听器的使用

    在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...

    struts2 拦截器 权限 ajax jsp

    在Struts2的配置文件(如struts.xml)中,我们可以定义拦截器链,将多个拦截器串联起来,每个拦截器按照顺序执行。 1. **创建自定义拦截器**:首先,我们需要创建一个实现了`Interceptor`接口的类,重写`intercept...

    学习常用知识(java,sql,oracle,ejb,ssh,struts,xml,监听器,拦截器,过滤器)

    在IT领域,掌握Java、SQL、Oracle、EJB、SSH、Struts、XML以及监听器、拦截器和过滤器等技术是至关重要的。这些技术涵盖了Web应用开发的多个层面,对于初学者而言,理解并熟练运用它们能为职业生涯打下坚实的基础。 ...

    浅析JAVA中过滤器、监听器、拦截器的区别

    与过滤器和监听器不同,拦截器更多地用于框架层面上,如Spring、Hibernate、Struts2等。拦截器的作用是拦截框架中的方法调用或Web请求,并在方法或请求执行前后执行特定的代码逻辑。拦截器可以在配置文件中声明,也...

    拦截器和控制器的区别

    拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...

    struts2 Https 配置

    Struts2是一个非常流行的...总结起来,配置Struts2应用支持HTTPS涉及服务器SSL配置、Struts2配置、过滤器设置以及可能的拦截器实现。通过这些步骤,可以确保基于Struts2的Web应用在传输敏感数据时具有较高的安全性。

    Java中的拦截器、过滤器、监听器用法详解

    Java中的拦截器、过滤器、监听器用法详解 Java中的拦截器、过滤器、监听器是三个重要的概念,它们在Java Web开发中扮演着非常重要的角色。本文将详细介绍Java中的拦截器、过滤器、监听器的用法,包括它们的功能、...

    struts2+cas单点登陆例子

    2. **配置web.xml**:在项目的`web.xml`文件中,我们需要配置CAS过滤器和监听器,它们负责拦截请求,处理CAS的票据验证。过滤器会检查用户是否已经通过CAS验证,如果没有,则重定向到CAS服务器的登录页面。 3. **...

    flex与struts2整合

    配置包括定义Flex的上下文监听器、消息代理Servlet等,这些都是Flex与Struts2之间通信的关键组件。 #### 三、深入理解整合原理 整合Flex与Struts2不仅仅是在项目中简单地添加几个库或配置文件。更重要的是理解两者...

    Struts2框架笔记

    2. **请求处理**: 当客户端发送请求时,过滤器拦截请求并将其转发给Struts2的内核进行处理。 3. **Action执行**: Struts2内核解析请求并定位到相应的Action类进行执行。 4. **结果处理**: 执行完成后,根据Action的...

    搭建struts2的jar包

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。...在实际开发中,还需要对Struts2的拦截器、结果类型、I18N、异常处理等方面有深入理解,才能充分利用其功能。

    struts2必备的包和配置文件

    2. `web.xml`:这是Servlet容器的部署描述符,用于配置过滤器和监听器。在Struts2中,你需要配置`StrutsPrepareAndExecuteFilter`来拦截HTTP请求并交给Struts2框架处理。 在实际开发中,可能还需要根据需求添加其他...

    struts2教程我在培训时用的

    - **内建拦截器**:Struts2提供了一系列预定义的拦截器,如参数填充拦截器、异常处理拦截器等。 - **自定义拦截器**:开发者可以自定义拦截器,实现特定的功能。 - **自定义方法过滤拦截器**:根据Action的方法名来...

    struts2所有包和配置文件

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它极大地简化了开发过程,提供了丰富的动作、拦截器和结果类型,使得开发者可以更专注于业务逻辑,而不是繁琐的HTTP请求处理。...

    struts2整合fileupload

    要实现这个功能,你需要在`struts.xml`配置文件中启用该插件,并设置相应的拦截器。例如: ```xml <constant name="struts.multipart.parser" value="jakarta"/> <param name="maximumSize">10485760...

    struts2必要的包免费下载

    3. **设置web.xml**:在`WEB-INF/web.xml`中配置Struts2的过滤器和监听器,以启动框架。 4. **编写Action类**:创建符合Struts2约定的Action类,定义业务逻辑。 5. **创建配置文件**:编写`struts.xml`或其他...

Global site tag (gtag.js) - Google Analytics