struts2拦截器将用户操作日志存入数据库_struts2拦截器详解
struts2拦截器将用户操作日志存入数据库由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“struts2拦截器详解”。
struts2拦截器--将用户操作日志存入数据库
1.建表,如下所示:
2.新建OperationLogModel.java,其具有上述属性。3.自动生成PO 4.在struts.xml中配置拦截器:
5.如下例子中的用户登录和修改密码,要在相应xml文件中加入,即:
index
changePawordPre
6.在项目中新建文件夹log,在其下新建类LogInterceptor.java,如下: package com.bfw.crms.log;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSeion;import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import org.apache.struts2.ServletActionContext;import com.bfw.crms.action.BulletinAction;import com.bfw.crms.action.SystemAction;import com.bfw.crms.model.EmployeeModel;import com.bfw.crms.model.OperationLogModel;import com.bfw.crms.po.OperationLog;import com.bfw.crms.util.BeanUtil;import com.bfw.crms.util.DateTimeUtil;import com.ninetowns.framework.dao.ObjectDao;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;@SuppreWarnings(“serial”)
public cla LogInterceptor extends AbstractInterceptor{
private String logName;
private String logContent;
protected Logger log = Logger.getLogger(getCla());
protected HttpSeion getSeion()
{
return getRequest().getSeion();
}
protected HttpServletRequest getRequest()
{
return ServletActionContext.getRequest();
}
public void init(){
}
private ObjectDao objectDao = null;
public ObjectDao getObjectDao()
{
return objectDao;
}
public void setObjectDao(ObjectDao objectDao)
{
this.objectDao = objectDao;
}
@Override
public String intercept(ActionInvocation ai)throws Exception
{
Object action= ai.getAction();
String method= ai.getProxy().getMethod();
try{
if(StringUtils.isBlank(method))method = “method”;
EmployeeModel sysUser(EmployeeModel)this.getSeion().getAttribute(“employee”);
String userName = “”;
if(sysUser!=null)userName = sysUser.getName();
=
String currentTime = DateTimeUtil.getDateTime();
String logContentHead = “用户”+userName+currentTime;
ai.invoke();//执行被拦截action
if(action instanceof BulletinAction){
if(method.equals(“save”)){
logName = “保存部门”;
logContent = logContentHead
+“保存部门:”+ai.getStack().findValue(“sysOrg.orgName”);
log.info(logContent);
addSysLog(logName,logContent);
}
if(method.equals(“delete”)){
logName = “删除部门”;
logContent = logContentHead +“”+((String[])(ai.getStack().findValue(“flag_id”))).length+“条部门信息”;
log.info(logContent);
addSysLog(logName,logContent);
}
}
if(actioninstanceof SystemAction){
if(method.equals(“login”)){
logName = “登录系统”;
logContent = logContentHead;
log.info(logContent);
addSysLog(logName,logContent);
}
if(method.equals(“changePaword”)){
logName = “修改密码”;
logContent = logContentHead +“删除1条单位信息”;
log.info(logContent);
addSysLog(logName,logContent);
}
}
}catch(Exception e){
e.printStackTrace();
}
return Action.SUCCESS;
}
/**
* 插入系统日志 model2po()
* @param logName
* @param logContent
*/
删除
private void addSysLog(String logName,String logContent){
OperationLogModel operationModel = new OperationLogModel();
OperationLog operationPO = new OperationLog();
operationModel.setOperation(logContent);
BeanUtil.model2po(operationModel, operationPO);
this.getObjectDao().saveObject(operationPO);
}
} OK