java SpringmvcAOP拦截Controller,获取session(自定义注解的方式)

项目纵览


第一步创建

packageorg.cyxl.spring.controller;

 

 

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

 

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

 

 

 

@Controller

@RequestMapping(value="/test.action")

public class TestController {

  @RequestMapping(params="m=save")

  public void testduo(HttpServletRequest request,HttpServletResponse response,HttpSession httpSession)

  {

    System.out.println("abc");

    httpSession.setAttribute("testsession", "testsession");

  System.out.println(httpSession.getAttribute("testsession"));

     

  }

 

 

}

 

第二步创建

packageorg.cyxl.spring.aop;

 

 

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpSession;

 

importorg.aspectj.lang.JoinPoint;

importorg.aspectj.lang.ProceedingJoinPoint;

 

importorg.aspectj.lang.annotation.AfterReturning;

importorg.aspectj.lang.annotation.AfterThrowing;

importorg.aspectj.lang.annotation.Around;

importorg.aspectj.lang.annotation.Aspect;

importorg.aspectj.lang.annotation.Before;

importorg.aspectj.lang.annotation.Pointcut;

 

importorg.springframework.web.context.request.RequestContextHolder;

importorg.springframework.web.context.request.ServletRequestAttributes;

@Aspect 

public class LogAspect {

   // 任何通知方法都可以将第一个参数定义为 org.aspectj.lang.JoinPoint类型 

  @Pointcut("execution(*org.cyxl.spring.controller.*.*(..))"

    private void anyMethod(){}//定义一个切入点 

  @Before("anyMethod()"

    public void doAccessCheck(JoinPoint call){ 

    String clazz =call.getTarget().getClass().getName(); 

        // 获取目标对象上正在执行的方法名 

        String methodName =call.getSignature().getName(); 

        System.out.println("前置通知:" + clazz + "类的" + methodName + "方法开始了...");

        System.out.println("前置通知"); 

        HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 

        HttpSession session =request.getSession(); 

        System.out.println(session.getAttribute("testsession"));

    } 

 

     

    @AfterReturning("anyMethod()"

    public void doAfter(){ 

        System.out.println("后置通知"); 

    } 

     

  

     

    @AfterThrowing("anyMethod()"

    public void doAfterThrow(){ 

        System.out.println("例外通知"); 

    } 

     

    @Around("anyMethod()"

    public Object doBasicProfiling(ProceedingJoinPointpjp) throws Throwable{ 

        System.out.println("进入环绕通知"); 

        Object object = pjp.proceed();//执行该方法 

        System.out.println("退出方法"); 

        return object; 

    }  }

第三部

<?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:jee="http://www.springframework.org/schema/jee"

  xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"

  xmlns:aop="http://www.springframework.org/schema/aop"xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsd

  http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.1.xsd

  http://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee-4.1.xsd

  http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd

  http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.1.xsd

  http://www.springframework.org/schema/mvc 

   http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

    <!-- ioc注解 -->

  <context:component-scan base-package="org.cyxl.spring.controller"></context:component-scan>

     <aop:aspectj-autoproxy/> 

    

     <bean id="myInterceptor"class="org.cyxl.spring.aop.LogAspect"/>

 

    

</beans>

第四步

<?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:jee="http://www.springframework.org/schema/jee"

  xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"

  xmlns:aop="http://www.springframework.org/schema/aop"xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsd

  http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.1.xsd

  http://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee-4.1.xsd

  http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd

  http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.1.xsd

  http://www.springframework.org/schema/mvc 

   http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

 

  <!-- 可以扫描controllerservice...

  这里让扫描controller,指定controller的包

   -->

  <context:component-scan base-package="org.cyxl.spring.controller"></context:component-scan>

  <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置-->

 

  <!–通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller-> 

    <aop:aspectj-autoproxy proxy-target-class="true" /> 

   

   

<mvc:annotation-driven></mvc:annotation-driven>

 

   

    <!-- 视图解析器

  解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包

   -->

  <bean

  class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <!-- 配置jsp路径的前缀 -->

    <property name="prefix"value="/WEB-INF/jsp/"/>

    <!-- 配置jsp路径的后缀 -->

    <property name="suffix"value=".jsp"/>

  </bean>

 

  <!-- 文件上传 -->

  <bean id="multipartResolver"

  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- 设置上传文件的最大尺寸为5MB -->

    <property name="maxUploadSize">

      <value>5242880</value>

    </property>

  </bean>

  <!-- 拦截器 -->

  <!--

  <mvc:interceptors>

     <mvc:interceptor>

       <mvc:mapping path="/**" />

       <beanclass="com.interceptor.LoginInterceptor"></bean>

     </mvc:interceptor>

  </mvc:interceptors>

   -->

</beans>

 

运行结果



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值