博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过切面实现相关业务逻辑
阅读量:5795 次
发布时间:2019-06-18

本文共 4607 字,大约阅读时间需要 15 分钟。

一、xml配置  

View Code

 

二、java代码

package com.ucfgroup.framework.web.app.aspect;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.log4j.Logger;import org.aspectj.lang.JoinPoint;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.util.StringUtils;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.ucfgroup.framework.utils.WebUtil;import com.ucfgroup.framework.web.app.personal.entity.PUserZt;import com.ucfgroup.framework.web.app.usrmgmt.dao.TOperLogMapper;import com.ucfgroup.framework.web.app.usrmgmt.entity.TOperLog;import com.ucfgroup.framework.web.app.usrmgmt.entity.TuUser;import com.ucfgroup.framework.web.log.model.OperLog;public class LogAspect {    @Autowired    private TOperLogMapper tOperLogMapper;    protected Logger LOG = Logger.getLogger(getClass());    public void logManager(JoinPoint joinPoint) throws Exception {        // 记录日志失败不影响业务继续        try {            // // 接收到请求,记录请求内容            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder                    .getRequestAttributes();            HttpServletRequest request = attributes.getRequest();            HttpSession session = request.getSession();            PUserZt zt = (PUserZt) session.getAttribute("ZTModel");            TuUser tuUser = (TuUser) session.getAttribute("USER_INFO");            // check if user is login            Authentication auth = SecurityContextHolder.getContext().getAuthentication();            // 记录日志失败不影响业务继续            String method = joinPoint.getSignature().getName();            TOperLog tOperLog = new TOperLog();            if (null != tuUser) {                tOperLog.setUsername(tuUser.getUsername());            }            if (null != zt) {                // log.setBranchNo(zt.getBranchNo());                tOperLog.setClientId(zt.getZtid());            }            tOperLog.setBrowserAgent(request.getHeader("user-agent"));            tOperLog.setIpAddress(WebUtil.getIpAddr(request));            tOperLog.setMethod(StringUtils.hasText(method) ? method.replace("do", "").toUpperCase() : "");            tOperLog.setOperationTime(new Date(System.currentTimeMillis()));            tOperLog.setReqMsg(getReqMsg(request));            tOperLog.setResUrl(request.getServletPath());            if ("GET".equals(tOperLog.getMethod()) || "HEAD".equals(tOperLog.getMethod())                    || "OPTIONS".equals(tOperLog.getMethod())) {                tOperLog.setLogType(OperLog.ACCESS_LOG);            } else {                tOperLog.setLogType(OperLog.UPDATE_LOG);            }            tOperLogMapper.insert(tOperLog);        } catch (Throwable e) {            LOG.error("Save log failed: " + e.getMessage(), e);        }    }    private String getReqMsg(HttpServletRequest request) {        Map
paraMap = getReqParams(request); StringBuilder parameterStr = new StringBuilder(); boolean first = true; for (Entry
entry : paraMap.entrySet()) { if (!first) { parameterStr.append("&"); } else { first = false; } String value = entry.getValue(); parameterStr.append(entry.getKey()).append("="); // 隐藏 password 域 if (entry.getKey().toLowerCase().contains("password")) { parameterStr.append("********"); } else { parameterStr.append(value); } } return parameterStr.toString(); } private Map
getReqParams(HttpServletRequest request) { Map
reqParams = new HashMap
(); // trim the parameters Iterator
it = request.getParameterMap().keySet().iterator(); while (it.hasNext()) { String key = it.next(); // 密码不做trim() if (key.toLowerCase().contains("password")) { reqParams.put(key, request.getParameter(key)); } else { reqParams.put(key, request.getParameter(key).trim()); } } return reqParams; }}
View Code

三、总结

Aop的内容非常丰富,由于时间原因,我先将亲测可行的代码记录下来,以后我会慢慢丰富其内容的,毕竟知识越辨越明。

转载地址:http://mbbfx.baihongyu.com/

你可能感兴趣的文章
跨vlan通信-----单臂路由技术
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
查看>>
C++多态、继承的简单分析
查看>>
库克称未来苹果用户可自己决定是否降频 网友:你是在搞笑吗?
查看>>
6倍性能差100TB容量,阿里云POLARDB咋实现?
查看>>
Sublime Text 2 技巧
查看>>
参加婚礼
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
CSS Custom Properties 自定义属性
查看>>
vim
查看>>
MVVM计算器(下)
查看>>
C++中指针和引用的区别
查看>>
簡單分稀 iptables 記錄 udp 微軟 138 端口
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
H3C-路由策略
查看>>
centos 修改字符界面分辨率
查看>>
LNMP之Mysql主从复制(四)
查看>>