package com.lcl.demo.sbDemo.livable.configuration.annotation;
import java.lang.reflect.Method;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Component
@Aspect
public class MyAspect {
@Pointcut("@annotation(com.lcl.demo.sbDemo.livable.configuration.annotation.MyAnnotation)")
public void myAspect(){}
@Before("myAspect()")
public void doBeforeMyAspect(JoinPoint joinPoint){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Map<String, String[]> paraMap = request.getParameterMap();
//根据joinPoint获取方法上的注入值
String operate = getControllerOperate(joinPoint);
boolean isSave = getControllerIsSave(joinPoint);
//根据request获取请求中的参数值
String name = paraMap.get("name")!=null?paraMap.get("name")[0]:"游客";
String record = "[姓名]:"+name + " [操作]:"+operate + " [存储]:"+isSave;
System.err.println("执行记录=:"+record);
//根据isSave决定是否存入数据库。
}
/**
* 获取注解中对方法的描述信息 用于Controller层注解
*
* @param joinPoint 切点
* @return 方法描述
* @throws Exception
*/
public static String getControllerOperate(JoinPoint joinPoint) {
String operate = "";
try {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class<?> targetClass = Class.forName(targetName);
Method[] methods = targetClass.getMethods();
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class<?>[] clazzs = method.getParameterTypes();
if (clazzs.length == arguments.length) {
operate = method.getAnnotation(MyAnnotation. class).operate();
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return operate;
}
/**
* 获取注解中对方法的描述信息 用于Controller层注解
*
* @param joinPoint 切点
* @return 方法描述
* @throws Exception
*/
public static boolean getControllerIsSave(JoinPoint joinPoint) {
boolean isSave = false;
try {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class<?> targetClass = Class.forName(targetName);
Method[] methods = targetClass.getMethods();
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class<?>[] clazzs = method.getParameterTypes();
if (clazzs.length == arguments.length) {
isSave = method.getAnnotation(MyAnnotation. class).isSave();
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return isSave;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
简易后台管理系统(二)

共350个文件
gif:156个
js:60个
class:25个

需积分: 22 19 下载量 46 浏览量
2018-11-07
01:59:03
上传
评论
收藏 1.73MB ZIP 举报
温馨提示
使用步骤 1.下载后解压。导入项目。 2.执行init中的sql。主要是要把系统用户建立起来。 3.运行项目,前台输入http://localhost:8080 可前往登录页。 4.帐号 admin 密码 123456 登录。 登录进去之后就自己玩啦。
资源推荐
资源详情
资源评论



















收起资源包目录





































































































共 350 条
- 1
- 2
- 3
- 4
资源评论


抓娃小兵
- 粉丝: 246
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- i2c-tools4.3工具tar包
- 【通信基站技术】3900系列BBU V100R015C10技术规格详解:涵盖GSM、UMTS、LTE(FDD/TDD/NB-IoT)、NR多制式基站性能参数与业务模型
- 用于人类颜值评分的神经网络系统
- 神经网络各种模型PyTorch实现
- 【移动通信领域】华为2017-2018年天线及射频产品目录:面向4.5G/5G网络演进的全系列多频段多端口紧凑型天线解决方案
- MATLAB 神经网络实现的 30 个案例深度剖析
- ### 文章总结 华为开站指导书
- HTML5视频终极指南:从入门到精通
- BTS3900&BTS5900 V100R017C10SPC050 性能指标参考
- Implements of MATAB神经网络30个案例分析
- 基于 PyTorch 的各类神经网络模型实现方法
- 3900系列&5900系列基站 软硬件兼容说明(74)(XLSX)-CN
- 基于 PyTorch 的异构图注意力网络 (HAN) 实现
- AAU 典型功率配置表(V100R015C10-02)(XLSX)-CN
- Data+AI 下一代数智平台建设.pptx
- Coding Agent 驱动研发提效:从实践到流程改进.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
