


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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.實體類北京市昌平區(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詳細(xì)內(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年重慶市梁平區(qū)教育委員會遴選考試真題
- 2024年重慶開放大學(xué)重慶工商職業(yè)學(xué)院招聘筆試真題
- 2024年太行城鄉(xiāng)建設(shè)集團有限公司招聘筆試真題
- 2024年東莞廣播電視臺招聘事業(yè)單位工作人員筆試真題
- 2022-2027年中國門把手市場競爭態(tài)勢及行業(yè)投資潛力預(yù)測報告
- 2025屆湖南省沅澧共同體高三下學(xué)期第一次模擬考試數(shù)學(xué)試題(解析版)
- 2021-2026年中國袋式過濾器市場競爭格局及投資戰(zhàn)略規(guī)劃報告
- 2025年中國高保真耳塞行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2023-2028年中國南充房地產(chǎn)行業(yè)市場深度分析及投資策略咨詢報告
- 人生管理培訓(xùn)課件
- 2024年廣東省中考生物試卷(含答案)
- 江蘇省宿遷市泗洪縣2023-2024學(xué)年六年級下學(xué)期期末綜合(道德與法治+科學(xué))試卷
- 食管早癌的內(nèi)鏡診斷
- 江西省南昌市南昌縣2022-2023學(xué)年八年級下學(xué)期期末英語試題
- 單機試車檢查、聯(lián)動試車確認(rèn)表
- 一例腎破裂伴胸腔積液患者疑難病例討論
- JB∕T 13883-2020 閥門電液執(zhí)行裝置
- 山東省東營市廣饒縣2023-2024學(xué)年八年級下學(xué)期期中考試語文試題
- JJG 621-2012 液壓千斤頂行業(yè)標(biāo)準(zhǔn)
- 地下工程暗挖隧道施工質(zhì)量控制培訓(xùn)課件
- 護理站站長述職報告
評論
0/150
提交評論