


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、SSMAOP日志1.數(shù)據(jù)庫與表結(jié)構(gòu)1.1.日志表信息描述sysLog1.2.sql語句CREATE TABLE sysLog(id VARCHAR2(32) default SYS_GUID() PRIMARY KEY,visitTime timestamp, username VARCHAR2(50), ip VARCHAR2(30),url VARCHAR2(50),executionTime int, method VARCHAR2(200)1.3.實體類北京市昌平區(qū)建材城西路 龍辦公樓一層:序號字段名稱字段類型字段描述1idVARCHAR2主鍵 無意義uuid2visitTimetim
2、estamp時間3usernameVARCHAR2操作者用戶名4ipVARCHAR2ip5urlVARCHAR2url6executionTimeint執(zhí)行時長7methodVARCHAR方法public class SysLog private String id; private Date visitTime;private String visitTimeStr; private String username; private String ip;private String url; private Long executionTime; private String method;
3、2.基于AOP日志處理2.1. 頁面syslog-list.jsp詳細內(nèi)容請查看 中頁面信息2.2. 創(chuàng)建切面類處理日志北京市昌平區(qū)建材城西路 龍辦公樓一層:Component Aspectpublic class LogAop Autowiredprivate HttpServletRequest request;Autowiredprivate ISysLogService sysLogService;private Date startTime; / 時間private Class executionClass;/ 的類private Method executionMethod; /
4、的方法/ 主要獲取 時間、 的類、 的方法Before("execution(* com.itheima.ssm.controller.*.*(.)")public void doBefore(JoinPoint jp) throws NoSuchMethodException, SecurityException startTime = new Date(); / 時間/ 獲取 的類executionClass = jp.getTarget().getClass();/ 獲取 的方法String methodName = jp.getSignature().getName
5、();/ 獲取 的方法的名稱Object args = jp.getArgs();/ 獲取 的方法的參數(shù)if (args = null | args.length = 0) / 無參數(shù)executionMethod = executionClass.getMethod(methodName); / 只能獲取無參數(shù)方法 else / 有參數(shù),就將args中所有元素遍歷,獲取對應(yīng)的Class,裝入到一個Class Class classArgs = new Classargs.length;北京市昌平區(qū)建材城西路 龍辦公樓一層:for (int i = 0; i < args.length;
6、 i+) classArgsi = argsi.getClass();executionMethod = executionClass.getMethod(methodName, classArgs);/ 獲取有參數(shù)方法/ 主要獲取日志中其它信息,時長、ip、url. After("execution(* com.itheima.ssm.controller.*.*(.)") public void doAfter(JoinPoint jp) throws Exception / 獲取類上的RequestMapping對象if (executionClass != SysL
7、ogController.class) RequestMapping classAnnotation = (RequestMapping)executionClass.getAnnotation(RequestMapping.class); if (classAnnotation != null) / 獲取方法上的RequestMapping對象RequestMapping methodAnnotation = executionMethod.getAnnotation(RequestMapping.class);if (methodAnnotation != null) String url
8、 = "" / 它的值應(yīng)該是類上的RequestMapping的value+方法上的RequestMapping的valueurl = classAnnotation.value()0 + methodAnnotation.value()0; SysLog sysLog = new SysLog();/ 獲取 時長Long executionTime = new Date().getTime() - startTime.getTime();/ 將sysLog對象屬性封裝sysLog.setExecutionTime(executionTime); sysLog.setUrl
9、(url);/ 獲取ipString ip = request.getRemoteAddr(); sysLog.setIp(ip);/ 可以通過securityContext獲取,也可以從request.getSession中獲取SecurityContext context = SecurityContextHolder.getContext(); / request.getSession().getAttribute("SPRING_SECURITY_CONTEXT")String username = (User) (context.getAuthentication
10、().getPrincipal().getUsername();sysLog.setUsername(username);sysLog.setMethod("類名" + executionClass.getName() + "方法名" + executionMethod.getName();sysLog.setVisitTime(startTime);/ 調(diào)用Service,調(diào)用dao將sysLog insert數(shù)據(jù)庫sysLogService.save(sysLog);在切面類中我們需要獲取登錄用戶的username,還需要獲取ip地址,我們怎么處理?
11、username獲取SecurityContextHolder獲取ip地址獲取ip地址的獲取我們可以通過request.getRemoteAddr()方法獲取到。在Spring中可以通過ReqontextListener來獲取request或session對象。2.3.SysLogControllerRequestMapping("/sysLog") Controllerpublic class SysLogController Autowiredprivate ISysLogService sysLogService;RequestMapping("/findA
12、ll.do")public M AndView findAll() throws Exception M AndView mv = new M AndView();List<SysLog> sysLogs = sysLogService.findAll(); mv.addObject("sysLogs", sysLogs); mv.setViewName("syslog-list");return mv;2.4.Service北京市昌平區(qū)建材城西路 龍辦公樓一層:Service Transactionalpublic class S
13、ysLogServiceImpl implements ISysLogService Autowiredprivate ISysLogDao sysLogDao;Overridepublic void save(SysLog log) throws Exception sysLogDao.save(log);Override2.5.Daopublic interface ISysLogDao Select("select * from syslog") Results(Result(id=true,column="id",property="i
14、d"), Result(column="visitTime",property="visitTime"), Result(column="ip",property="ip"), Result(column="url",property="url"), Result(column="executionTime",property="executionTime"), Result(column="method",property="method"), Result(column="username",property="username")public List<SysLog> findAll() throws Exception;Insert("insert into syslog(visitTime,username,ip,url,exe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國液壓系統(tǒng)行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國微波移動監(jiān)控系統(tǒng)行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國全方位智能手機GPS儀行業(yè)投資前景及策略咨詢報告
- 鎮(zhèn)江教師英語題目及答案
- 偵探題目及答案50字
- 2025年中國視數(shù)字顯微鏡行業(yè)投資前景及策略咨詢研究報告
- 2025年中國膠印印刷橡皮布行業(yè)投資前景及策略咨詢研究報告
- 2025年中國電鍍金剛石鉆頭行業(yè)投資前景及策略咨詢研究報告
- 2025年中國汽車里程表導(dǎo)光板行業(yè)投資前景及策略咨詢研究報告
- 2025年中國雜交高粱種子行業(yè)投資前景及策略咨詢研究報告
- 供應(yīng)鏈整體運作流程
- MT/T 548-1996單體液壓支柱使用規(guī)范
- GB/T 9765-2009輪胎氣門嘴螺紋
- GB/T 23806-2009精細陶瓷斷裂韌性試驗方法單邊預(yù)裂紋梁(SEPB)法
- 2022年04月四川宜賓市敘州區(qū)面向區(qū)內(nèi)外考試選調(diào)在編在職教師136人考試押題庫【1000題】含答案附帶詳解析
- FZ/T 74001-2020紡織品針織運動護具
- 圖解“雙均線雙交叉”期貨、股票操作系統(tǒng)課件
- 宮外孕右輸卵管妊娠腹腔鏡下盆腔粘連分解術(shù)、右輸卵管妊娠開窗取胚術(shù)手術(shù)記錄模板
- 美軍標電子裝備環(huán)境試驗-mil-std-810g
- 混凝土重力壩設(shè)計說明書
- 應(yīng)用回歸分析(第三版)何曉群_劉文卿_課后習(xí)題答案_完整版
評論
0/150
提交評論