ZeroBlue

留出时间,让自己微笑。
posts - 6, comments - 12, trackbacks - 0, articles - 0
   :: 首页 ::  :: 联系 ::  :: 管理

Appfuse1.9.3 for springMVC源码解读(1)-- 从web.xml开始

Posted on 2006-08-29 13:48 zeroblue 阅读(1902) 评论(0)  编辑  收藏 所属分类: Appfuse

web.xml中定义的过滤器:
        (注:Appfuse的构建网上有丰富的资料,在此不再赘述)

1、securityFilter

< filter >
        
< filter-name > securityFilter </ filter-name >
        
< filter-class >
            org.acegisecurity.util.FilterToBeanProxy
        
</ filter-class >
        
< init-param >
            
< param-name > targetClass </ param-name >
            
< param-value >
                org.acegisecurity.util.FilterChainProxy
            
</ param-value >
        
</ init-param >
</ filter >

  此过滤器定义Acegi Security 应用。Acegi Security 被广泛应用于Spring社区,在基于Spring的项目中提供全面的安全服务。它包含了一组接口和类,可以直接在Spring IoC容器中进行配置。Acegi Security 完全基于接口设计实现,为用户定制和扩展提供了极大的空间。基于SpringAOP,Acegi Security 可以完成方法级的权限管理。
(
文档
 下载)

2、cacheFilter

< filter >
        
< filter-name > cacheFilter </ filter-name >
        
< filter-class >
            com.opensymphony.oscache.web.filter.CacheFilter
        
</ filter-class >
 
</ filter >

  OSCache是一个基于javaEE架构的缓存解决方案,主要针对页面缓存。由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现高速缓存的机制。 其提供了内存和磁盘缓存两种机制,这种缓存机制使你的Web应用具备了一定程度的容错性,比如当数据库因某些原因当掉时,远程用户仍能访问缓存中的内容。
   
但有意思的是,Appfuse并没用使用这个页面缓存机制。这个过滤器的filter-mapping被注释掉了。如下:

   <!--  Commented out  for   2  reasons: 
                                          1 ) it ' s a pain when developing JSPs, and

                                       2 ) it causes the Signup webtest to fail 
                                         大意是说这东西使开发Jsp页面变得很痛苦,并且无法测试(英文水平有限 ^_^)。
      -->

    
<!-- filter - mapping >
        
< filter - name > cacheFilter </ filter - name >
        
< url - pattern >* .jsp </ url - pattern >
    
</ filter - mapping -->

( 文档与下载   )

3、clickstream

< filter >
    
< filter - name > clickstream </ filter - name >
    
< filter - class > com.opensymphony.clickstream.ClickstreamFilter </ filter - class >
</ filter >

< filter - mapping >
    
< filter - name > clickstream </ filter - name >
    
< url - pattern >* .jsp </ url - pattern >
</ filter - mapping >

< filter - mapping >
    
< filter - name > clickstream </ filter - name >
    
< url - pattern >* .html </ url - pattern >
</ filter - mapping >

< listener >
    
< listener - class > com.opensymphony.clickstream.ClickstreamListener </ listener - class >
</ listener >


  又是opensymphony的东西,clickstream用来跟踪用户的页面操作。其功能非常强大,通过过滤器我们可以跟踪用户的每一次点击信息。并且在用户的Session结束时,可以将用户的跟踪信息输出到文件或形成一个输出流以便处理。当用户的Session开始时listener开始一次跟踪,filter捕捉每一次请求。
文档与下载

4、hibernateFilter

     < filter >
        
< filter-name > hibernateFilter </ filter-name >
        
< filter-class >
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        
</ filter-class >
    
</ filter >

  
< filter >  
        
< filter-name > opensession </ filter-name >
 
        
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
 
        
< init-param >
 
            
< param-name > singleSession </ param-name >
 
            
< param-value > false </ param-value >
 
        
</ init-param >
 
    
</ filter >  

  当使用hibernate的延迟加载时,你必须保证是在同一个Session中使用结果集,否则会抛出异常。而HibernateTemplate试图每次执行时打开和关闭Session。这时就应该采用 OpenSessionInViewFilter模式。
相关文档
5、UrlRewriteFilter

  < filter >
   
< filter-name > rewriteFilter </ filter-name >
     
< filter-class >
       org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
     
</ filter-class >
    
< init-param >
    
< param-name > logLevel </ param-name >
      
< param-value > commons </ param-value >
   
</ init-param >
 
</ filter >
< filter-mapping >
  
< filter-name > rewriteFilter </ filter-name >
  
< url-pattern > /* </ url-pattern >
  
<!-- dispatcher>REQUEST</dispatcher>
   <dispatcher>FORWARD</dispatcher
-->

 
</ filter-mapping >

  Url重写,通过配置文件改写你的URL,将输入的URL映射到真实的URL地址来达到URL美化的作用。
文档与下载

6、sitemesh

  < filter >
  
< filter-name > sitemesh </ filter-name >
  
< filter-class >
   com.opensymphony.module.sitemesh.filter.PageFilter
  
</ filter-class >
 
</ filter >

  sitemesh是由一个基于web页面布局、装饰以及与现存web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观, 如一致的导航条,一致的banner,一致的版权,等等。它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容, 如htm的内容,使得它的内容也符合你的页面结构的要求。甚至于它能将html文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。
文档与下载 )( 学习

7、Display Tag Lib标签库

< filter >
        
< filter-name > exportFilter </ filter-name >
        
< filter-class >
            org.displaytag.filter.ResponseOverrideFilter
        
</ filter-class >
</ filter >

  Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等,  而且使用起来非常的方便。能够大大减少代码量。
文档与下载

8、GZIPFilter

     < filter >
        
< filter-name > compressionFilter </ filter-name >
        
< filter-class > com.lady.webapp.filter.GZIPFilter </ filter-class >
    
</ filter >

将输出流压缩为GZIP格式,据说压缩比率可达70%-80%,这样输出到客户端的数据量大大减少,可以显著的提高性能。这是一个Appfuse自定义的过滤器,详情见下面链接。
文档

最后一个是I18N应用的过滤器,不多说了。

还有一个监听器非常重要,即IntrospectorCleanupListener:

     < listener >
        
< listener-class >
            org.springframework.web.util.IntrospectorCleanupListener
        
</ listener-class >
    
</ listener >

有现成的资料,COPY过来:
spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由  JavaBeans Introspector的使用而引起的缓冲泄露。
(引用:刘文涛的BLOG


只有注册用户登录后才能发表评论。


网站导航: