首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

xml模式-spring的AOP拦截用户操作

2013-03-16 
xml方式---spring的AOP拦截用户操作需要日志记录,将所有的web操作记录到数据库中,使用aop来记录日志,当然

xml方式---spring的AOP拦截用户操作

需要日志记录,将所有的web操作记录到数据库中,使用aop来记录日志,当然是一个好的选择,spring中集成aop记录日志的方式有多种(aop的配置方式有多种,注解、xml配置),这里只说一个xml配置的例子。

   1、编写日志记录类
   2、配置aop

   1、编写日志记录类

 

Java代码 
  1. @SuppressWarnings("unchecked")    
  2. public class LogService {        
  3.    public void logAll(JoinPoint jp){        
  4.   System.out.println("in LogService, method logAll invoked.");        
  5.  System.out.println("========================");       
  6.      StringBuilder sb = new StringBuilder();        
  7.    sb.append("method:" + jp.getSignature().getName());          
  8.  HttpServletRequest request = ServletActionContext.getRequest();    
  9.         Iterator<Entry<String, Object>> iter = request.getParameterMap().entrySet().iterator();        
  10.     boolean isFirst = true;       
  11.      sb.append(" paras:");      
  12.       while(iter.hasNext()){        
  13.         Entry<String, Object> entry = iter.next();      
  14.           if(isFirst){         
  15.            isFirst = false;         
  16.        }else{             
  17.        sb.append("#");      
  18.           }               
  19.  sb.append(entry.getKey() + "=");      
  20.           Object[] allValue = (Object[]) entry.getValue();          
  21.       for(int i = 0; i < allValue.length; i++){           
  22.          if(i != 0){        
  23.                 sb.append(",");        
  24.             }               
  25.      sb.append(allValue[i].toString());          
  26.       }        
  27.     }           
  28.            System.out.println(sb.toString());        
  29.     System.out.println("========================");      
  30.   }  
  31.   }          

 

 

 2、配置aop
   在applicationContext.xml中配置

Xml代码 
  1. </aop:config>          
  2.     <bean id="logService" class="com.cjnetwork.cms.service.LogService"></bean>           
  3. <aop:config>  
  4. <aop:aspect id="myAspect" ref="logService">  
  5. <aop:pointcut expression="execution(* com.cjnetwork.cms.action.*.*(..))" id="logPointCut"/>  
  6. <aop:before method="logAll" pointcut-ref="logPointCut"/>  
  7. </aop:aspect>  
  8. </aop:config>  
  9. <bean id="logService" class="com.cjnetwork.cms.service.LogService"></bean>  
  10. <aop:config proxy-target-class="true" />    

 


基本配置就是这样的,这里需要配置<aop:config proxy-target-class="true" /> ,表示强制使用cglib代理,而不是java本身的代理,这个很重要,如果使用java自带的代理,则会抛出异常,提示说代理类无法转换为我们自己的类,这是因为默认的该属性为false,这种代理方式,需要实现接口的方式,代理返回的类可以转换为对应的接口类,但无法直接转换为类的实现,这种方式不推荐。

热点排行