SSH拦截器的使用 (2009-06-27 23:48)

struts2很好的实现了拦截器的使用,下面就简单的说下在SSH项目中如何通过拦截器实现对日志管理,
首先是在struts.xml中配置拦截器:
 <package name="struts-interceptor" extends="struts-default">
    <interceptors>
    <interceptor name="authorize" class="com.huike.hidp.system.log.LogInterceptor" />
      <interceptor-stack name="appStack">
        <interceptor-ref name="authorize">
          <param name="uncheckedValue">0</param>
       </interceptor-ref>
       <!-- 系统内置的拦截器栈 -->
       <interceptor-ref name="defaultStack"/>
      </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="appStack"/><!-- 这句是设置所有Action自动调用的拦截器堆栈 -->
  </package>
 
在上面xml的代码中我们看到了拦截器的一个实现类LogInterceptor, 在这里类中继承了另外一个类AbstractInterceptor ,通过里面的intercept(ActionInvocation ai)方法来对action事件进行拦截:
public String intercept(ActionInvocation ai) throws Exception  { 
  Map session = ai.getInvocationContext().getSession();
  Object action = ai.getAction(); 
  String method = ai.getProxy().getMethod();   
  try{ 
      if(StringUtils.isBlank(method)) method = "method";   
      String userName =String.valueOf(session.get(Constant.USER_NAME)); 
    
      String currentTime = DateTimeUtils.getCurrentTime();
      String logContentHead = userName+currentTime;
    
      //对触发的action进行判断
     // if (action instanceof SexMesAction) { 
          if(method.equals("save")){
              logName = "保存";
              logContent =logContentHead +"执行保存:"+action.toString()+ ai.getStack().findValue("sysOrg.orgName");        
              log.info(logContent);
              addSysLog(session,logName,logContent,wac); 
         }
         if(method.equals("delete")){
              logName = "删除";
              logContent =logContentHead +"执行删除";
              log.info(logContent);  
              addSysLog(session,logName,logContent,wac); 
          }
         if(method.equals("update")){
             logName = "修改";
             logContent =logContentHead +"执行修改";
             log.info(logContent);  
             addSysLog(session,logName,logContent,wac); 
         }
         if(method.equals("query")){
             logName = "查询";
             logContent =logContentHead +"执行查询";
             log.info(logContent);  
             addSysLog(session,logName,logContent,wac); 
         }
     //} 
         ai.invoke();//执行被拦截action 
  
  }catch(Exception e){
      e.printStackTrace();
  }
  return Action.SUCCESS;
}   
 
/** 
* 插入系统日志
* @param logName 
* @param logContent
 * @throws Exception
*/ 
private void addSysLog(Map session,String logName,String logContent,WebApplicationContext wc) throws Exception{ 
}
 
通过上面的代码实现就可以对每一个action事件进行拦截处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值