http://www.360doc.com/content/13/0105/10/4280915_258300428.shtml
Spring MVC 的AOP配置:
第一,WEB.XML,这里跟正常的Spring MVC一样,
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>groups</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<description></description>
<display-name>GoodIndexChartServlet</display-name>
<servlet-name>GoodIndexChartServlet</servlet-name>
<servlet-class>com.servlet.GoodIndexChartServlet</servlet-class>
</servlet>
<servlet>
<description></description>
<display-name>GoodIndexInitServlet</display-name>
<servlet-name>GoodIndexInitServlet</servlet-name>
<servlet-class>com.servlet.GoodIndexInitServlet</servlet-class>
<!-- <load-on-startup>0</load-on-startup>-->
</servlet>
<servlet-mapping>
<servlet-name>GoodIndexChartServlet</servlet-name>
<url-pattern>/goodindexchart</url-pattern>
</servlet-mapping>
<!---->
<servlet-mapping>
<servlet-name>GoodIndexInitServlet</servlet-name>
<url-pattern>/goodindexInit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>gjkonline</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.txt</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
<filter>
<description>no description</description>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>
com.gjkonline.filter.EncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>RequestTokenServlet</servlet-name>
<servlet-class>net.oauth.example.provider.servlets.RequestTokenServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AuthorizationServlet</servlet-name>
<servlet-class>net.oauth.example.provider.servlets.AuthorizationServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AccessTokenServlet</servlet-name>
<servlet-class>net.oauth.example.provider.servlets.AccessTokenServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>EchoServlet</servlet-name>
<servlet-class>net.oauth.example.provider.servlets.EchoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RequestTokenServlet</servlet-name>
<url-pattern>/request_token</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AuthorizationServlet</servlet-name>
<url-pattern>/authorize</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AccessTokenServlet</servlet-name>
<url-pattern>/access_token</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EchoServlet</servlet-name>
<url-pattern>/echo</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
第二、
Spring MVC 中web.xml红色部分的配置文件,文件名是gjkonline-servlet.xml,跟web.xml放在同一个目录下,具体内容是:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:aspectj-autoproxy/>
<context:annotation-config />
<!-- Auto scan, declare the location path -->
<context:component-scan base-package="com.gjkonline.springmvc.rest" />
<!-- Using annontation -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- Resolve the view, declare the prefix and suffix -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/view/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />
</beans>
此文件中红色标注的一定要加,要不然AOP切点,切不进去,这跟其它的框架下的AOP配置最大的区别;
第三,
applicationContext.xml这个配置文件没什么特别之处,我把关于AOP的配置,都放在了applicationContext-aop.xml文件中,具体引入部分是,
<import resource="applicationContext-aop.xml"/>
第四、
applicationContext-aop.xml配置文件的具体内容(我主要用的是注解方式来生成切片的):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.gjkonline.aop" />
</beans>
第五:拦截器的JAVA类:
package com.gjkonline.aop;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gjkonline.springmvc.rest.base.HomeBaseController;
import com.ibatis.dao.impl.CommonDAO;
@Component
@Aspect
public class LogServiceXMLAop {
private CommonDAO commonDAO;
@Autowired
public void setCommonDAO(CommonDAO commonDAO) {
this.commonDAO = commonDAO;
}
@Before("execution(* com.gjkonline.springmvc.rest.DataHomeController.*Fws(..))")
public void beforeMethod(JoinPoint jp) {
try{
Object[] args = jp.getArgs();
String user="";
String url="";
for (int i = 0; i < args.length; i++){
if(args[i] instanceof HttpServletRequest)
{
HttpServletRequest request= (HttpServletRequest)args[i];
user = new HomeBaseController().getRestUserId(request);
url=request.getRequestURI();
}
}
this.commonDAO.insertLog(user, "宏观接口调用", url, "", "class com.gjkonline.springmvc.rest.macro.DataHomeController");
}
catch(Exception e){
e.printStackTrace();
}
}
}
这样全部配置完成了!
分享到:
相关推荐
本篇文章将深入探讨如何在Spring MVC中配置和使用基于注解的AOP。 一、Spring AOP基础知识 1. **切面(Aspect)**:切面是关注点的模块化,例如日志、事务管理等。在Spring AOP中,切面可以是Java类或@Aspect注解...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理。本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志...
下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### 注解方式 #### 1. 定义切面(Aspect) 在Spring AOP中,切面是包含多个通知(advisors)的类。使用`@Aspect`注解标记切面类,例如: ```java @Aspect ...
本文将深入探讨Spring与Spring MVC的整合配置,并结合标签"源码"和"工具"来解析相关的技术细节。 首先,Spring框架的核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...
- **AOP集成**:Spring MVC与Spring的面向切面编程(AOP)无缝集成,可以方便地实现事务管理和其他切面功能。 2. **Hibernate 3.6.8**: - **ORM框架**:Hibernate是一个强大的ORM工具,它将Java对象映射到数据库...
本压缩包文件主要涵盖了Spring框架的核心部分——Spring MVC和AOP(面向切面编程)的详细知识,对于想要深入理解和运用Spring框架的开发者来说,是一份非常宝贵的资源。 首先,我们来看看《Spring3.20权威开发指南...
在本文中,我们将深入探讨如何使用Spring MVC框架中的AOP(面向切面编程)特性,结合注解方式来实现对Controller层的拦截,以便进行日志管理。这是一项非常实用的技术,可以帮助开发者追踪和记录应用程序的关键操作...
在IT行业中,Spring MVC、MyBatis Plus以及AOP(面向切面编程)是Java Web开发中的重要组件,常用于构建高效、灵活的企业级应用。本项目“Spring MVC Mybatis Plus 实现AOP 切面日志系统”旨在提供一个基础的日志...
本实例“spring_aop1.rar”是一个关于Spring AOP入门的教程,旨在帮助开发者更好地理解和运用Spring的AOP特性,同时也涉及到Spring MVC的相关知识。下面我们将深入探讨这两个关键概念。 首先,让我们了解一下Spring...
另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...
下面是一个简单的Spring MVC中AOP的例子,分为配置和实现两部分。 ### 配置 1. 在`spring-common.xml`配置文件中,我们需要引入AOP相关的命名空间,并声明一个`<aop:aspectj-autoproxy>`元素。这会告诉Spring容器...
通过分享这些文件,开发者可以更方便地进行Spring配置,无需担心获取资源的问题。 在实际开发中,使用这些XSD文件,开发者可以编写出符合规范的Spring配置XML,确保配置的有效性和可读性。同时,Spring还支持基于...
本文将深入探讨在Spring MVC环境中如何配置和使用AOP,以及解决配置无效的问题。 首先,我们要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,比如跨越多个对象的业务逻辑。切点(Pointcut)...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志、事务管理、权限控制等。当我们想通过注解方式拦截Controller层的方法时,可能会遇到一些问题。本文将详细介绍如何使用...
以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...
在Spring MVC中,AOP常用于日志记录、事务管理等横切关注点,它可以将这些功能以声明式的方式与业务代码分离。 `ojdbc14.jar` 是Oracle数据库的驱动包,如果你的应用需要连接Oracle数据库,这个jar是必不可少的。 ...
这个压缩包包含了关于Spring MVC的案例、配置和原理的详细资料,对于初学者来说,是深入理解该框架的良好资源。 一、Spring MVC 基本概念 1. **模型-视图-控制器(MVC)**:MVC是一种设计模式,将业务逻辑、数据...
1. **Spring 框架核心库**:这是 Spring MVC 的基础,它包含了 IoC(Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)的核心概念。主要的 jar 包有 `spring-core.jar`、`...
Spring框架是Java开发中不可或缺的一部分,它以模块化的方式提供了许多功能,如依赖注入(IOC)、面向切面编程(AOP)以及Model-View-Controller(MVC)架构模式。在本实例中,我们将深入探讨这三个核心概念以及它们...
首先,我们需要创建Spring MVC的配置文件,比如`spring-mvc.xml`,其中包含视图解析器、模型-视图对象、以及Spring MVC的其他相关配置。 - **引入MyBatis** 在Spring配置文件中引入MyBatis的配置,例如`mybatis-...