`
Caspar
  • 浏览: 27032 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

FilterDispatcher 的作用

阅读更多

org.apache.struts2.dispatcher.FilterDispatcher是Struts2的主要的Filter,负责四个方面的功能:
        (1)执行Actions
        (2)清除ActionContext
        (3)维护静态内容
        (4)清除request生命周期内的XWork的interceptors
    另注:该过滤器应该过滤所有的请求URL。一般被设置为/*.
    具体:
        (1)执行Actions
            过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,
            然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则
            Action的输出将不会被装饰。
        (2)清除ActionContext
            过滤器为了确保内存溢出,会自动的清除ActionContext。这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。
            ActionContextCleanUp提供了怎么处理这些问题的一些信息。
        (3)维护静态内容
            过滤器也会维护在Struts2中使用的一些公共的静态的内容,例如JavaScript文件,CSS文件等。搜索/struts/*范围内的
            请求,然后将/struts/后面的值映射到一些struts的公共包中,也可以在你的类路径中搜索。默认情况下会去查找以下
            包:
                org.apache.struts2.static
                template
            这样你只用请求/struts/xhtml/styles.css,XHTML 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)

分享到:
评论

相关推荐

    简单理解Struts2中拦截器与过滤器的区别及执行顺序

    3. 作用域:拦截器只能对 Action 请求起作用,而过滤器可以对几乎所有请求起作用。 4. 访问权限:拦截器可以访问 Action 上下文、值栈里的对象,而过滤器不能。 5. 执行顺序:拦截器可以多次调用,而过滤器只能在...

    struts2 源码分析

    从 org.apache.struts2.dispatcher.FilterDispatcher 开始 Java 代码阅读,我们可以看到 FilterDispatcher 的 init 方法,它负责初始化 Dispatcher 对象,并创建了一个 ActionMapper 实例,以便对请求进行处理。...

    Struts2详细工作流程

    ActionMapper的作用是确定请求与哪个Action相对应。如果需要,FilterDispatcher将请求传递给ActionProxy。ActionProxy通过Configuration Manager读取struts.xml配置文件,找到需要执行的Action类,例如,在用户注册...

    J2EE企业级项目开发-1期 常见问题.doc

    Q1:关于Struts2的组成及各部分作用,我们可以理解Struts 2框架主要由三大部分构成:核心控制器FilterDispatcher、业务控制器Action和用户实现的业务逻辑组件。FilterDispatcher作为基础,负责框架的内部流程控制和...

    Struts2的运行流程

    5. `FilterDispatcher`将请求转发给`ActionMapper`,`ActionMapper`的作用是解析请求URL,判断是否需要Struts2进行处理。 6. 如果`ActionMapper`确认请求需要处理,`FilterDispatcher`会停止后续过滤器链的执行,并...

    struts2讲义

    然而,要使Struts2完全发挥作用,还需配置`struts.xml`文件,其中包含了Action映射、拦截器栈、结果类型等详细信息。此外,开发人员还需编写Action类、配置视图层(如JSP页面或FreeMarker模板)以及可能的模型层实体...

    Struts2--1.使用 Filter 作为控制器的 MVC

    在Struts2中,虽然Action类是主要的控制器角色,但Filter同样可以在处理请求时发挥重要作用。Servlet Filter是一个在请求到达目标Servlet或JSP之前对其进行预处理,以及在响应离开服务器之前进行后处理的组件。它...

    Struts2_内核中文文档.pdf

    - **过滤器**是在整个请求/响应周期中起作用的,通常用于跨多个Action的全局设置或功能。 #### 五、实践建议 - **深入学习源码:**为了更好地理解Struts2的工作机制,建议下载并学习`struts2-core.jar`和`struts2-...

    struts2部分源码分析

    在这个过程中,Struts2的配置文件(struts.xml)起着关键作用,它定义了Action和Action方法的映射关系。 ActionInvocation是Struts2中执行Action的核心对象,它管理Action的调用过程。在调用Action之前,一系列的...

    SSH运行原理,包括详细描述和图

    - **作用**:负责具体的业务逻辑处理和数据操作。 - **调用方式**:Action通过调用模型组件的方法来处理用户请求。 #### 5. Struts2的视图组件 - **支持的视图技术**:Struts2支持多种视图技术,包括但不限于JSP、...

    webwork工作机制

    WebWork2是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序中起到了核心架构的作用。WebWork的工作机制分为框架初始化和用户请求处理两个主要部分。 一、WebWork框架初始化过程 WebWork框架的初始化...

    struts2工作流程

    Struts2中默认包含的过滤器有ActionContextCleanUp,这是一个可选过滤器,主要作用是在请求结束时清理与请求相关的上下文环境,这对于框架间的集成特别有帮助,例如在使用SiteMesh插件时。除此之外,还有其他自定义...

    java中三大框架和项目模拟面试题目[参考].pdf

    3. 拦截器作用于Action请求,过滤器作用范围更广。 4. 拦截器可以访问Action上下文和值栈,过滤器则不能。 **使用Struts2框架的原因**: 1. MVC架构清晰,开发流程明确,便于理解和控制。 2. 使用OGNL(Object-...

    详细的strut2开发教程

    `ActionMapper`在这一过程中也起到了关键作用,它负责映射Action的执行结果到相应的视图。 6. **ObjectFactory** 在上述流程中,所有的对象(如Action、Result、Interceptor等)都是通过`ObjectFactory`创建的。`...

    struts2问题

    开发者可以通过声明局部变量、扩展RequestProcessor、在Spring中使用"prototype"作用域等方式确保线程安全。而Struts2改进了这一设计,每个请求都会创建新的Action实例,因此不存在线程安全问题,但这也意味着性能上...

    struts试题

    4. Package 的作用: 在 Struts2 中,Package 用于组织 Action。Package 可以为空,如果为空,则表示该包为默认空间。如果 namespace 为空,Struts2 会自动将请求分配给默认空间。 5. Action 的实现方式: Action...

    struts2+hibernate

    Struts2和Hibernate是两种广泛使用的Java Web开发框架,它们分别...通过深入理解每个组件的作用,可以更好地运用这两个框架,解决实际开发中的问题。同时,掌握配置文件的使用和拦截器的编写也是提升开发效率的关键。

    Struts2工作原理图

    其中,ActionContextCleanUp是一个可选的过滤器,它的作用是清理ActionContext,确保Struts2和其他框架(如SiteMesh Plugin)的兼容性。 接着,FilterDispatcher是Struts2的核心组件,它接收并处理来自客户端的请求...

Global site tag (gtag.js) - Google Analytics