


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rè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.實(shí)體類北京市昌平區(qū)建材城西路 龍辦公樓一層:序號字段名稱字段類型字段描述1idVARCHAR2主鍵 無意義uuid2visitTimetim
2、estamp時(shí)間3usernameVARCHAR2操作者用戶名4ipVARCHAR2ip5urlVARCHAR2url6executionTimeint執(zhí)行時(shí)長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詳細(xì)內(nèi)容請查看 中頁面信息2.2. 創(chuàng)建切面類處理日志北京市昌平區(qū)建材城西路 龍辦公樓一層:Component Aspectpublic class LogAop Autowiredprivate HttpServletRequest request;Autowiredprivate ISysLogService sysLogService;private Date startTime; / 時(shí)間private Class executionClass;/ 的類private Method executionMethod; /
4、的方法/ 主要獲取 時(shí)間、 的類、 的方法Before("execution(* com.itheima.ssm.controller.*.*(.)")public void doBefore(JoinPoint jp) throws NoSuchMethodException, SecurityException startTime = new Date(); / 時(shí)間/ 獲取 的類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,裝入到一個(gè)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ù)方法/ 主要獲取日志中其它信息,時(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();/ 獲取 時(shí)長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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年地方志編纂與管理考試相關(guān)知識試卷及答案
- 2025年中國冷凍儲物袋行業(yè)市場全景分析及前景機(jī)遇研判報(bào)告
- 市政管道進(jìn)場安全教育
- 員工入場安全培訓(xùn)
- 中醫(yī)護(hù)理相關(guān)知識
- 教育勞動(dòng)的德性價(jià)值闡釋
- 高考?xì)v史熱點(diǎn)難點(diǎn)押題預(yù)測 經(jīng)濟(jì)與社會(huì)生活(含解析)
- 幼兒園小班數(shù)學(xué)《幫幫小豬》教案
- 幼兒園小班美術(shù)版畫教案龍卷風(fēng)
- java面試題及答案kafka篇
- 2025發(fā)展對象考試題庫與參考答案
- 絕交協(xié)議書2025修訂版:規(guī)范情感解除流程的法律文件
- 煤礦安全用電培訓(xùn)課件
- GB/T 45019-2024道路用玄武巖纖維瀝青混合料
- 2024版新能源汽車充電站場地租賃及充電服務(wù)合同2篇
- 特種設(shè)備日管控、周排查、月調(diào)度模板
- 急性髓系白血病護(hù)理個(gè)案
- 兒童膿毒血癥護(hù)理
- 頂板事故應(yīng)急演練
- 智研咨詢發(fā)布:中國企業(yè)數(shù)字化解決方案行業(yè)市場發(fā)展環(huán)境及前景研究報(bào)告
- 《大學(xué)計(jì)算機(jī)基礎(chǔ)案例教程(微課版)第2版》全套教學(xué)課件
評論
0/150
提交評論