Struts2 拦截器

如果不用spring的话,系统的耦合会很大很大,后期肯定会出大问题。想个办法能不能在数据库方面做做文章。数据库可是有触发器的,唯一要解决的是是哪个用户做的操作。
要么就用日志,在action里记录。日志构造的成一个sql语句,定期执行。
以上是个人的小小建议,采纳要慎重!
52356 (中级程序员) 2009-12-16
第一点 感觉你用户的操作入库有点没用吧 这样会有大量的IO操作  并发访问你的数据库吃不消  你可以写个日志不就可以了么
第二点  这是个典型的 横切问题 用spring的aop解决最好不过   用你想的拦截器也可以实现  或者用spring发个事件也行 这个比较简单 而且耦合度基本为0
第三点 如果你不打算用spring 你可以写个父类 放所有action都继承这个父亲类  在父类中把公共部分提取出去  子类中只是取得用户名了 操作名了  这样不就省得你每个都去写了么
wocsok (资深程序员) 2009-12-16
Struts2 拦截器,直接上代码
Java代码 复制代码
  1. import java.util.Date;      
  2. import java.util.Iterator;      
  3. import java.util.Map;      
  4.      
  5. import java.util.Set;      
  6.      
  7. import javax.servlet.http.HttpServletRequest;      
  8.      
  9. import org.apache.struts2.ServletActionContext;      
  10.      
  11. import com.chiyu.model.Admin;      
  12. import com.chiyu.model.Adminoperationlog;      
  13. import com.chiyu.service.IAdminOperationLogService;      
  14. import com.chiyu.service.IAdminService;      
  15. import com.opensymphony.xwork2.Action;      
  16. import com.opensymphony.xwork2.ActionContext;      
  17. import com.opensymphony.xwork2.ActionInvocation;      
  18. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;      
  19.      
  20. import freemarker.template.utility.StringUtil;      
  21.      
  22. public class LoggerInterceptor extends AbstractInterceptor {      
  23.     private IAdminOperationLogService adminOperationLogService;      
  24.     private IAdminService adminService;      
  25.     private static final long serialVersionUID = 1358600090729208361L;      
  26.      
  27.     @SuppressWarnings("unchecked")      
  28.     @Override     
  29.     public String intercept(ActionInvocation invocation) throws Exception {      
  30.         System.out.println("日志拦截器已经开始启动..");      
  31.         String actionName = invocation.getAction().getClass().toString();      
  32.         invocation.invoke();      
  33.         final Map<String, Object> parameters = invocation      
  34.                 .getInvocationContext().getParameters();      
  35.         boolean result = invocation.getProxy().getExecuteResult();      
  36.         String method = invocation.getProxy().getMethod();      
  37.         // 取得请求相关的ActionContext实例      
  38.         ActionContext ctx = invocation.getInvocationContext();      
  39.      
  40.         HttpServletRequest request = ServletActionContext.getRequest();      
  41.         String ip = request.getRemoteAddr();      
  42.         Map session = ctx.getSession();      
  43.         // 取出名为user的session属性      
  44.         String name = (String) session.get(Admin.ADMIN_KEY);      
  45.         Admin admin = adminService.findAdminByAdminName(name);      
  46.         System.out.println(admin);      
  47.         if (admin != null) {      
  48.             Adminoperationlog adminLog = new Adminoperationlog();      
  49.             adminLog.setAdminId(admin.getAdminId());      
  50.             adminLog.setAdminName(name);      
  51.             adminLog.setDealTime(new java.sql.Date(System.currentTimeMillis()));      
  52.             adminLog.setOperationIp(ip);      
  53.             adminLog.setOperationSource(actionName + "---" + method + "---"     
  54.                     + parameters + "---" + result);      
  55.             adminOperationLogService.save(adminLog);      
  56.         }      
  57.         return Action.SUCCESS;      
  58.     }  

posted on 2010-03-23 17:32 飞熊 阅读(251) 评论(0)  编辑  收藏 所属分类: struts2.0


只有注册用户登录后才能发表评论。


网站导航:
 
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜