zoukankan      html  css  js  c++  java
  • FilterDispatcher 的作用(struts2.1.3以前,新版本改了)

    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)

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/3669677.html
Copyright © 2011-2022 走看看