分享

spring_mvc_之AOP

 rui5327 2013-01-05

Spring MVC AOP配置:

第一,WEB.XML,这里跟正常的Spring MVC一样,

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" xmlns="http://java./xml/ns/j2ee"

    xmlns:xsi="http://www./2001/XMLSchema-instance"

    xsi:schemaLocation="http://java./xml/ns/j2ee 

http://java./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>gjkonline</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./schema/beans"

xmlns:xsi="http://www./2001/XMLSchema-instance"

xmlns:p="http://www./schema/p"

xmlns:context="http://www./schema/context"

xmlns:aop="http://www./schema/aop"

xsi:schemaLocation="http://www./schema/beans

http://www./schema/beans/spring-beans-3.0.xsd

http://www./schema/context

http://www./schema/context/spring-context-3.0.xsd

        http://www./schema/aop  

        http://www./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./schema/beans" xmlns:xsi="http://www./2001/XMLSchema-instance"

xmlns:aop="http://www./schema/aop" xmlns:context="http://www./schema/context"

xsi:schemaLocation="http://www./schema/beans 

            http://www./schema/beans/spring-beans-3.0.xsd

            http://www./schema/context

            http://www./schema/context/spring-context-3.0.xsd

            http://www./schema/aop  

            http://www./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();

     }

}

}

这样全部配置完成了!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约