刘文涛

Flex3,Struts2,Hibernate3,Spring2,UML,Oracle,mysql,tomcat,compass,lucene

   :: 首页 ::  ::  ::  :: 管理 ::

2006年8月30日 #

     摘要: 一 :高层设计 核心组件 大多数的企业级应用有四种基本的安全需求。 1 :需要对主体进行鉴别 2 :需要对web请求进行保护 3 :需要对服务层方法进行保护 4 :很多情况下需要对域对象实例进行保护 Acegi系统提供了一个通用的框架,它可以满足所有这四种企业安全级的需求。到现在...  阅读全文
posted @ 2006-08-30 18:09 刘文涛| 编辑 收藏

一 :Address 继承抽象类BaseObject , 实现 Serializable 接口

         1: BaseObject 要求必须实现   1:toString()   2:equals(Object o)   3:hashCode()  三个方法
          
         2:  Serializable  没有 需要 实现 的方法。


二 :LabelValue  继承抽象类BaseObject   实现 Comparable 接口 ,Serializable 接口
          
         1:  BaseObject 要求必须实现   1:toString()   2:equals(Object o)   3:hashCode()  三个方法
          
         2: Comparable  要求必须实现 compareTo(Object o) 方法

         3:  Serializable  没有 需要 实现 的方法。


三 :Role  继承抽象类BaseObject   实现 GrantedAuthority接口 ,Serializable 接口
          
         1:  BaseObject 要求必须实现   1:toString()   2:equals(Object o)   3:hashCode()  三个方法
          
         2: GrantedAuthority 要求必须实现 getAuthority() 方法

         3:  Serializable  没有 需要 实现 的方法。


四 :User  继承抽象类BaseObject   实现 UserDetails接口 ,Serializable 接口
          
         1:  BaseObject 要求必须实现   1:toString()   2:equals(Object o)   3:hashCode()  三个方法
          
         2: UserDetails 要求必须实现 7 个方法 :

   java.lang.String getPassword();       (与数据库中password字段的get方法重合)

    java.lang.String getUsername();     (与数据库中username字段的get方法重合)

       org.acegisecurity.GrantedAuthority[] getAuthorities();

    
boolean isAccountNonExpired();

    
boolean isAccountNonLocked();

    
boolean isCredentialsNonExpired();

    
boolean isEnabled();


         3:  Serializable  没有 需要 实现 的方法。

posted @ 2006-08-30 16:15 刘文涛| 编辑 收藏

1  : org.acegisecurity.util.FilterToBeanProxy

2  : com.opensymphony.oscache.web.filter.CacheFilter
    
3  : com.opensymphony.clickstream.ClickstreamFilter
    
4  : org.springframework.web.filter.CharacterEncodingFilter

5  : org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

6  : org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

7  : com.opensymphony.module.sitemesh.filter.PageFilter

8  : org.displaytag.filter.ResponseOverrideFilter

9  : org.appfuse.webapp.filter.GZIPFilter

10  : org.appfuse.webapp.filter.LocaleFilter

11  : com.opensymphony.webwork.dispatcher.FilterDispatcher
posted @ 2006-08-30 15:48 刘文涛| 编辑 收藏

刘文涛原创  转载最好保留作者署名

     1:     com.opensymphony.clickstream.ClickstreamListener    
    
2:     net.sf.navigator.menu.MenuContextListener    
    
3:     org.springframework.web.util.IntrospectorCleanupListener    
    
4:     org.appfuse.webapp.listener.StartupListener    
    
5:     org.appfuse.webapp.listener.UserCounterListener


一 :StartupListener : 

public class StartupListener extends ContextLoaderListener implements ServletContextListener {

}

在web.xml中相关配置是 :

     <context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>/WEB-INF/applicationContext-*.xml,/WEB-INF/security.xml</param-value>
    
</context-param>
    
    
<listener>
        
<listener-class>org.appfuse.webapp.listener.StartupListener</listener-class>
    
</listener>


本接口 继承了 org.springframework.web.context.ContextLoaderListener ContextLoaderListener和ContextLoaderServlet 都可以配置spring应用环境,前者配置的方式是在 web.xml中 :

<!-- 在web应用中通过web.xml加载spring的上下文: -->
<context-param> 
    
<param-name>contextConfigLocation</param-name> 
    
<param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
<listener> 
    
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


此外 StartupListener 还 实现了 javax.servlet.ServletContextListener 接口 :

package javax.servlet;

public interface ServletContextListener extends java.util.EventListener {
      
void contextInitialized(javax.servlet.ServletContextEvent servletContextEvent);

      
void contextDestroyed(javax.servlet.ServletContextEvent servletContextEvent);
}

 ,”碰巧“ 的是 ContextLoaderListener 也 实现了javax.servlet.ServletContextListener 接口 ,因此在 StartupListener 类中只重写了

public void contextInitialized(ServletContextEvent event) {

}

方法,这个方法会在容器启动时被调用,从而完成一些初始化的操作。具体包括三方面工作 :

1 :调用 父类ContextLoaderListener 的 同名方法 ,执行 spring context的初始化。搭建spring工作环境。

2 : 在ServletContext范围内 查找一个叫 "appConfig" 的 HashMap 类型变量 config ,如果没找到就 config = new HashMap()

3 :向 config中 压值 :包括 :

   a :  在web.xml中

    <context-param>
        
<param-name>csstheme</param-name>
        
<param-value>simplicity</param-value>
    
</context-param>


             csstheme 参数 

   b :  acegi 色彩的操作  (稍后补上)

            c :  查出项目中 所有的 角色 类型 存入 ServletContext 范围内的 availableRoles 变量。






















/**
 * 说明 : 监听器:继承Spring的 ContextLoaderListener类,实现:Sevelet的ServletContextListener接口
 * 作用 : 1:初始化Spring,使之可用, 2:取得DAO.TYPE信息和角色信息,存入全局应用环境上下文
 *
 * 1:ContextLoaderListener和ContextLoaderServlet。这两者在功能上完全等同,
 *   只是一个是基于Servlet2.3版本中新引入的Listener接口实现,
 *   而另一个基于Servlet接口实现。开发中可根据目标Web容器的实际情况进行选择。
 *
 * 2:凡是继承ServletContextListener接口的类,在web容器启动时调用其contextInitialized方法进行初始化,
 * 当容器关闭时调用其contextDestroyed的方法进行销毁
 
*/

public class StartupListener extends ContextLoaderListener implements ServletContextListener {}


 五 :UserCounterListener :

/**
 * 说明 : 监听器:实现HttpSessionAttributeListener接口和:Sevelet的ServletContextListener接口
 * 工作 : 记录登陆用户的数量和用户名
 *
 * 1:HttpSessionAttributeListener监听HttpSession中的属性的操作
 *
 * 2:凡是继承ServletContextListener接口的类,在web容器启动时调用其contextInitialized方法进行初始化,
 * 当容器关闭时调用其contextDestroyed的方法进行销毁
 
*/

public class UserCounterListener implements ServletContextListener, HttpSessionAttributeListener {}
posted @ 2006-08-30 15:11 刘文涛| 编辑 收藏