Spring-service-mvc.xml

<context:component-scan base-package="com.restful.controller,com.restful.aspect"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>

applicationcontext.xml

<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean name="dapAspect" class="com.restful.aspect.DaoAspect"/>

DaoAspect:

package com.restful.aspect;

import com.restful.model.MonitorAspectModel;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component; import java.util.Date; @Aspect
@Component
public class DaoAspect { private static Logger logger = Logger.getLogger(MonitorAspect.class); private MonitorAspectModel mam = new MonitorAspectModel(); @Around(value = "execution(* com.restful.service.UserServiceImpl.*(..))")
public Object controllerRunTime(ProceedingJoinPoint joinPoint) throws Throwable { mam.setClassName(joinPoint.getClass().getName()); mam.setMethodName(joinPoint.getSignature().getName()); mam.setStartTime(System.currentTimeMillis()); mam.setStartDate(new Date()); logger.info("\n==UserService切面开始计时==\n"); // 代理类 执行目标
Object object = joinPoint.proceed(); mam.setEndTime(System.currentTimeMillis()); mam.setRunTime(mam.getStartTime()-mam.getEndTime()); logger.info("\n info 日志记录: UserServiceImpl开始时间:" + mam.getStartDate() + "| 响应时间:" + mam.getRunTime() + "ms" + " | 执行类:" + mam.getClassName() + " | 执行方法:" + mam.getMethodName() + "\n");
logger.debug("\n debug 日志记录: UserServiceImpl开始时间:" + mam.getStartDate() + "| 响应时间:" + mam.getRunTime() + "ms" + " | 执行类:" + mam.getClassName() + " | 执行方法:" + mam.getMethodName() + "\n"); return object;
} }

MonitorAspectModel:

package com.restful.aspect;

import com.restful.model.MonitorAspectModel;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.junit.Test;
import org.springframework.stereotype.Component; import java.util.Date; @Aspect
@Component
public class MonitorAspect { private static Logger logger = Logger.getLogger(MonitorAspect.class); private MonitorAspectModel mam = new MonitorAspectModel(); private Date date; @Test
public void trest(){
logger.info("测试类");
} // @Pointcut(value = "execution(* com.restful.controller.*Controller*.*(..))")
// private void controllerointcut(){} // @Around(value = "controllerointcut()")
@Around(value = "execution(* com.restful.controller.RestController.*(..))")
public Object controllerRunTime(ProceedingJoinPoint joinPoint) throws Throwable { mam.setClassName(joinPoint.getClass().getName()); mam.setMethodName(joinPoint.getSignature().getName()); mam.setStartTime(System.currentTimeMillis()); mam.setStartDate(new Date()); logger.info("\n==Controller切面开始计时==\n"); // 代理类 执行目标
Object object = joinPoint.proceed(); mam.setEndTime(System.currentTimeMillis()); mam.setRunTime(mam.getStartTime()-mam.getEndTime()); logger.info("\n info 日志记录: Controller开始时间:" + mam.getStartDate() + "| 响应时间:" + mam.getRunTime() + "ms" + " | 执行类:" + mam.getClassName() + " | 执行方法:" + mam.getMethodName() + "\n");
logger.debug("\n debug 日志记录: Controller开始时间:" + mam.getStartDate() + "| 响应时间:" + mam.getRunTime() + "ms" + " | 执行类:" + mam.getClassName() + " | 执行方法:" + mam.getMethodName() + "\n"); return object;
} }

Controller:

package com.restful.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.restful.model.Page;
import com.restful.model.User;
import com.restful.service.StudentServiceImpl;
import com.restful.service.UserServiceImpl;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpSession;
import java.util.List; @Controller
@RequestMapping("/urg")
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration(locations = {"classpath*:springmybatis.xml"})
public class RestController { private Logger logger = Logger.getLogger(RestController.class.getName());
private String message = "可能遇到点问题…";
private final String SUCCESS = "success"; ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springmybatis.xml");
UserServiceImpl userService = (UserServiceImpl) applicationContext.getBean("userService"); String mseeage = "似乎遇到点问题……";
String info = "信息"; // 根据姓名查询,跳转到user页面
@RequestMapping(value = "/user/{name}",method = RequestMethod.POST)
public ModelAndView getStudentForName(@RequestParam("name")String name, ModelAndView modelAndView ){ logger.info("\n 输入的查询:" + name + "\n"); User user = new User();
user.setName(name);
List<User> users = userService.findByUser(user); modelAndView.addObject("users",users);
modelAndView.setViewName("/userlist"); return modelAndView;
} @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
public String updre(@RequestParam("id")Integer id,Model model){
logger.info("跳转upd修改页面,修改id:"+id);
User user = userService.findById(id);
user.setId(id);
model.addAttribute("upduser",user);
return "upd";
} // @ResponseBody
@RequestMapping(value = "/user",method = RequestMethod.PUT)
public ModelAndView upd(User user,ModelAndView modelAndView){
logger.info("修改的数据:"+user);
message = "修改失败";
if(user!=null){
if(userService.updateOne(user)!=0){
message = "修改成功!";
info = "修改信息";
modelAndView.addObject("reguser",user);
}
}
modelAndView.addObject("message",message);
modelAndView.addObject("info",info);
modelAndView.setViewName("redirect:user/usereditinfo");
return modelAndView;
} @RequestMapping(value = "/user",method = RequestMethod.DELETE)
public String del(@RequestParam("id")Integer id,Model model){
logger.info("删除id:"+id);
int del = userService.deleteOne(id);
info="删除信息";
if(del!=0) {
message = "删除成功";
}else {
message = "删除失败";
}
model.addAttribute("message",message);
return "redirect:list";
} @ResponseBody
@RequestMapping(value = "/user/json",method = RequestMethod.GET)
public ModelAndView jsonlist(@RequestParam(value = "jsonname",required = false)String name,ModelAndView modelAndView){
logger.info("json 传入的name:" + name );
User user = new User();
if(name!=null && name!=""){
user.setName(name);
List<User> users = userService.findByUser(user);
logger.info("查询到的users:" + users + "users的size:" + users.size());
boolean flag = users.size()==0;
logger.info(flag);
if( users.size()==0 ){
message = "查询失败";
}else {
//json字符串
String usersJsonStr = JSON.toJSONString(users);
//json对象
JSON usersJson = (JSON) JSON.toJSON(users);
message = "查询成功";
modelAndView.addObject("usersJsonStr",usersJsonStr);
modelAndView.addObject("usersJson",usersJson);
logger.info(usersJsonStr);
}
}else {
//前台已经检查是否为空,后台信息
message = "查询姓名不能为空";
}
modelAndView.setViewName("jsonlist");
modelAndView.addObject("message",message);
return modelAndView;
} @RequestMapping(value = "/user/list")
public String userList(@RequestParam(value = "nowpage",defaultValue = "1")Integer nowpage,
@RequestParam(value = "pagesize",defaultValue = "5")Integer pagesize,Model model){ Page<User> page = userService.findByPage(nowpage,pagesize);
model.addAttribute("nowPages",page);
// requestToViewNameTranslator
return "list";
// return model;
} @RequestMapping(value = "/user/reg")
public String reg(){
logger.info("跳转reg注册页面");
return "reg";
}
// @ResponseBody
@RequestMapping(value = "/user/reg",method = RequestMethod.POST)
public String reg(Model model,User user){
logger.info("注册的参数:"+user.toString());
int ids = userService.insertOne(user);
if(ids!=0){
message = "注册成功!";
model.addAttribute("reguser",user);
}
model.addAttribute("message",message);
return "userlist";
} @RequestMapping(value = "/login",method = RequestMethod.POST)
public String login(@RequestParam("name")String name, @RequestParam("pwd")String pwd, HttpSession httpSession, Model model){ User user = new User();
user.setName(name);
user.setPwd(pwd);
logger.info("登录信息:"+user.toString());
info = "登录信息";
message = "没有登陆信息!登录失败";
List<User> users = userService.findByUser(user);
if(users.size()!=0){
for(User us : users){
logger.info("查询匹配信息:" + us.toString());
if(us.getName().equals(name) && us.getPwd().equals(pwd)){
logger.info("正确匹配的:"+us.getName()+":"+us.getPwd()+" | ");
message = "登陆成功!";
httpSession.setAttribute("username",name);
model.addAttribute("reguser",us);
}else {
logger.info("未匹配的:"+us.getName()+":"+us.getPwd()+" | ");
message = "登陆失败!";
}
}
}else {
mseeage = "账号密码错误,登录失败!";
}
model.addAttribute("message",message); return "userlist";
} //测试redirect:user/usereditinfo 跳转userlist 只有修改方法upd() 调用
@RequestMapping(value = "user/usereditinfo")
public String userlist(@RequestParam(value = "message",required = false)String message,
@RequestParam(value = "info",required = false)String info,Model model){
model.addAttribute("message",message);
model.addAttribute("info",info);
return "userlist";
} // 测试
// @RequestMapping("/login")
// public String logOut(HttpSession httpSession){
// httpSession.invalidate();
// return "forward:list";
// } // 测试
// @RequestMapping(value = "/jgg")
// public String jgg(){
// logger.info("跳转jgg");
// return "jgg";
// } }

SpringAOP 注解方式的更多相关文章

  1. SpringAOP(注解方式实现面向切面编程)之常用Before、After、Around

    一.首先在Springmvc.xml文件中引入如下内容(本示例是在ssm框架基础上实现的) 1.引入命名空间 xmlns:aop="http://www.springframework.or ...

  2. springAOP注解方式定义切入点报错error at ::0 can't find referenced pointcut

    [说明] 1.使用spring版本:4.0.4 2.springAOP相关依赖包: 1)aopalliance-1.0.jar 2)aspectjweaver-1.8.9.jar 3)aspectjr ...

  3. springAOP注解方式实现日志操作

    通过自定义注解调用方法执行日志存储: package com.zktx.platform.log2; import java.lang.reflect.Method; import java.util ...

  4. 【SpringAop】【统一日志处理】注解方式理解以及使用

    [注意:本次代码的demo会存在百度网盘,由于公司的保密,禁止上传,所以仅本人可见] 目前公司在做数据资产项目,数据质量部分使用到了springaop做统一日志处理,以前对这块有了解,有点模糊不清,今 ...

  5. spring与hibernate整合配置基于Annotation注解方式管理实务

    1.配置数据源 数据库连接基本信息存放到properties文件中,因此先加载properties文件 <!-- jdbc连接信息 --> <context:property-pla ...

  6. 注解方式实现Spring声明式事务管理

    1.编写实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() { re ...

  7. 来一手 AOP 注解方式进行日志记录

    系统日志对于定位/排查问题的重要性不言而喻,相信许多开发和运维都深有体会. 通过日志追踪代码运行状况,模拟系统执行情况,并迅速定位代码/部署环境问题. 系统日志同样也是数据统计/建模的重要依据,通过分 ...

  8. spring 纯注解方式 与AOP

    spring注解方式 以前我也使用过纯注解方式.现在在这里做个记录 我们先认识几个我们都耳熟能详的注解 @configuration :从spring3.0这个注解就可以用于定义配置类,可以替换xml ...

  9. Spring声明式事务管理(基于注解方式实现)

    ----------------------siwuxie095                                 Spring 声明式事务管理(基于注解方式实现)         以转 ...

随机推荐

  1. 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署

    准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...

  2. 【NET Core】.NET Core中读取json配置文件

    在.NET Framework框架下应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别用 Sy ...

  3. pytest文档14-函数传参和firture传参数request

    前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...

  4. Windows 下通过DOS命令获取指定文件夹下所有文件的全路径

    1.在你要获取路径的文件夹下 新建文本文档 (.txt) 文件, 2.输入以下内容保存 DIR *.* /S/B >LIST.TXT /s 表示递归 3. 将文件后缀改成 .bat 4.双击运行 ...

  5. 文献导读 | A Pan-Cancer Analysis of Enhancer Expression in Nearly 9000 Patient Samples

    Chen, H., Li, C., Peng, X., Zhou, Z., Weinstein, J.N., Liang, H. and Cancer Genome Atlas Research Ne ...

  6. 文件上传下载显示进度(vue)

    编写了一个vue组件,可以实时显示文件上传和下载时候的进度 <template> <div v-show="circleProgress_wrapper_panel_sta ...

  7. [hdu P4081] Qin Shi Huang’s National Road System

    [hdu P4081] Qin Shi Huang’s National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Li ...

  8. R语言scale与unscale函数

    一.scale函数 R语言base库中自带数据标准化接口scale函数,函数介绍如下 Usage scale(x, center = TRUE, scale = TRUE) Arguments x: ...

  9. Cookie中的sessionid与JSONP原理

    一.首先说明一下cookie中的sessionid的作用. 1.cookie只是一些文本内容,多是键值对的形式,是请求头中的一部分 2.http是无连接的 知道这两点,就可以很容易的理解session ...

  10. .net反编译的九款神器

    本人搜集了下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Refle ...