struts2很好的实现了拦截器的使用,下面就简单的说下在SSH项目中如何通过拦截器实现对日志管理,
首先是在struts.xml中配置拦截器:
在上面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事件进行拦截处理。
阅读(793) | 评论(0) | 转发(0) |