Struts2 攔截器

          如果不用spring的話,系統(tǒng)的耦合會(huì)很大很大,后期肯定會(huì)出大問(wèn)題。想個(gè)辦法能不能在數(shù)據(jù)庫(kù)方面做做文章。數(shù)據(jù)庫(kù)可是有觸發(fā)器的,唯一要解決的是是哪個(gè)用戶做的操作。
          要么就用日志,在action里記錄。日志構(gòu)造的成一個(gè)sql語(yǔ)句,定期執(zhí)行。
          以上是個(gè)人的小小建議,采納要慎重!
          52356 (中級(jí)程序員) 2009-12-16
          第一點(diǎn) 感覺(jué)你用戶的操作入庫(kù)有點(diǎn)沒(méi)用吧 這樣會(huì)有大量的IO操作? 并發(fā)訪問(wèn)你的數(shù)據(jù)庫(kù)吃不消? 你可以寫(xiě)個(gè)日志不就可以了么
          第二點(diǎn)? 這是個(gè)典型的 橫切問(wèn)題 用spring的aop解決最好不過(guò)?? 用你想的攔截器也可以實(shí)現(xiàn)? 或者用spring發(fā)個(gè)事件也行 這個(gè)比較簡(jiǎn)單 而且耦合度基本為0
          第三點(diǎn) 如果你不打算用spring 你可以寫(xiě)個(gè)父類(lèi) 放所有action都繼承這個(gè)父親類(lèi)? 在父類(lèi)中把公共部分提取出去? 子類(lèi)中只是取得用戶名了 操作名了? 這樣不就省得你每個(gè)都去寫(xiě)了么
          wocsok (資深程序員) 2009-12-16
          Struts2 攔截器,直接上代碼
          Java代碼 復(fù)制代碼
          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("日志攔截器已經(jīng)開(kāi)始啟動(dòng)..");??? ??
          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. ????????//?取得請(qǐng)求相關(guān)的ActionContext實(shí)例??? ??
          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 飛熊 閱讀(283) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): struts2.0


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2010年3月>
          28123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          收藏夾

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 汶上县| 凤城市| 新源县| 阳泉市| 桃园县| 千阳县| 康平县| 阿拉尔市| 彭山县| 涟水县| 聂拉木县| 扬中市| 浮梁县| 京山县| 墨脱县| 仁化县| 昆明市| 洛浦县| 宜兰县| 武功县| 镇沅| 吴堡县| 汶上县| 财经| 贡觉县| 久治县| 遂溪县| 阿巴嘎旗| 泰兴市| 弥勒县| 西平县| 寿阳县| 班戈县| 五寨县| 四会市| 南部县| 宝坻区| 嘉定区| 南岸区| 德保县| 双柏县|