`
xuxingyin
  • 浏览: 48364 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

spring前置AOP拦截action

阅读更多

<!-- 实现BEFORE通知 配置 -->

   <bean id="autoProxyCreator"
   class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></bean>

<bean id="checkCustomerBefore" class="com.egt.struts.action.CheckCustomerAction"></bean>
<bean id="checkCustomerBeforeAdvisor"
   class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
   <property name="advice">
    <ref bean="checkCustomerBefore" />
   </property>
   <property name="patterns">
   <value>.*.execute</value>
   </property>
</bean>

CheckCustomerAction 方法

package com.egt.struts.action;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
import org.apache.struts.action.ActionMapping;
import org.springframework.aop.MethodBeforeAdvice;

import com.egt.repository.Customer;

public class CheckCustomerAction implements MethodBeforeAdvice {
private Logger logger = Logger.getLogger(this.getClass().getName());

public void before(Method method, Object[] args, Object target)
    throws Throwable {
   System.out.println("test1");
   logger.log(Priority.INFO, "customer权限控制拦截...");
   System.out.println("test2");

   HttpServletRequest request = (HttpServletRequest) args[2];
   HttpServletResponse response = (HttpServletResponse) args[3];
   HttpSession session = request.getSession();
   ActionMapping mapping = (ActionMapping) args[0];
  
   if (session.getAttribute("customer") == null) {
    System.out.println("test3");
    try {
     String url = request.getContextPath() + "/index.jsp";
     response.sendRedirect(url);
    } catch (Exception e) {
     System.out.println("test4");
    }
   }

}

}

如果我们每次调用到action里面的execute方法时就会调用拦截器进行拦截判断,

public void before(Method method, Object[] args, Object target)

method指拦截的方法,Object[] args指拦截的方法对应的参数,target指拦截的对象

分享到:
评论

相关推荐

    struts2+spring aop demo

    4. **连接Struts2和Spring**:在Struts2的配置文件(如`struts.xml`)中,我们需要配置Action类以使用Spring的依赖注入,这样Spring才能识别并应用AOP代理。 在实际的项目中,我们还需要考虑如何处理自定义参数。...

    springaop+arg

    在提供的"springinaction_aop"压缩包文件中,可能包含了关于Spring AOP的实例代码和解释,包括注解和XML配置的示例,以及如何处理参数的具体应用。通过阅读和学习这些材料,你可以更好地理解和掌握Spring AOP的用法...

    struts2+hirbenate+SpringAOP

    - **工作原理**:Struts2基于拦截器(Interceptor)模式,通过配置Action和结果来处理请求并展示相应的视图。 - **Action**:它是业务逻辑的载体,负责接收请求,执行业务操作,并返回结果。 - **结果映射**:...

    Spring基础教程 (PDF格式)&& Spring in action

    3. **Spring AOP**:书中可能会详细阐述如何定义和使用切面,以及如何配置通知类型(如前置通知、后置通知、环绕通知)以实现跨切面的关注点。 4. **Spring Boot**:随着Spring Boot的流行,该书可能也涵盖了Spring...

    Spring in Action英文完整版

    - **实现方式**:在Spring框架中,AOP可以通过代理模式实现,比如使用环绕通知、前置通知等。 - **应用场景**: - 日志记录:在方法执行前后记录日志信息。 - 安全控制:拦截特定的方法调用,进行权限验证。 - ...

    Spring通知的配置

    在Spring AOP中,通知(Advice)是一种特定类型的切面,它定义了切面应该执行的行为。Spring支持五种类型的通知: 1. **前置通知**:在目标方法执行前调用。 2. **后置通知**:无论方法是否成功执行,都会在其后...

    Spring课件 新.rar

    1. **模型层集成**:Spring的DAO和Service层可以作为Struts的Action类的后台支持。 2. **视图层集成**:Spring MVC与Struts的视图层可以协同工作,提供更灵活的展现方式。 3. **事务管理集成**:Spring的声明式...

    使用AOP进行权限控制

    当系统中的Action调用Service方法时,AOP机制会在方法调用前进行拦截,检查该方法是否被声明为需要权限控制。如果方法被标记,系统将进一步验证用户是否具备访问该方法所需的权限。若用户无权访问,将抛出`...

    AspectJ in Action 2nd Edition

    ### AspectJ in Action 第二版:企业级AOP与Spring应用深入解析 #### 知识点一:AspectJ概述及特点 - **AspectJ简介**:AspectJ是一种面向切面编程(AOP)语言,它扩展了Java语言,提供了一种更强大的方式来处理...

    SSH集成代理1.2版第一种和struts.xml中DelegatingActionProxy代理搭配

    1. **配置Spring**:在Spring的配置文件中,定义Action的Bean,并使用AOP的`&lt;aop:config&gt;`或`&lt;aop:aspect&gt;`标签来声明切面。例如,我们可以创建一个切面来实现事务管理。 2. **配置Struts**:在`struts.xml`中,...

    燕山大学 spring hibernate struts 三大框架 期末复习资料

    - **拦截器 (Interceptor)**: 在 Struts2 中,拦截器是一个重要的概念,它可以拦截 Action 的执行过程,执行前置和后置操作。例如,可以在 Action 执行前后进行权限验证、日志记录等操作。 - **拦截器定义**: 拦截...

    spring in acion

    读者会学习到如何定义切面、通知类型(前置、后置、环绕、异常、最终通知)、切入点表达式,以及如何在Spring中实现AOP代理。 3. **事务管理**:Spring提供了强大的事务管理功能,支持编程式和声明式事务。书中会...

    Spring+Struts+Hibernate 0基础学习查询,增加,下拉框查询,一看就会

    2. **Spring AOP**:学习如何定义切面、通知类型(前置、后置、环绕等),并应用到实际业务场景中。 3. **Spring事务管理**:掌握Spring的编程式和声明式事务管理,了解事务的ACID属性和传播行为。 4. **Struts2基础...

    spring框架学习

    - **struts-spring-plugin.jar的内部实现**:该插件通过拦截器来获取Spring容器中的Action对象,并将其传递给Struts2框架处理。 #### 十、Spring的事务管理 - **声明式事务管理(基于配置方式实现事务控制)**:...

    JAVA面试题SSH重点.pdf

    - 用户请求到达.do,Struts拦截器处理请求,ActionServlet调用Action,Action执行业务逻辑,然后根据结果转发到相应的JSP页面。 以上内容涵盖了Java面试中涉及的Spring AOP、Struts、Hibernate和Spring框架的相关...

    java框架面试题分析

    - **执行Action**:在所有前置拦截器执行完毕后,实际的`Action`方法被执行,之后可能还会有一些后置拦截器处理数据。 - **结果返回**:根据`Action`的执行结果,在`struts.xml`中定义的结果(`&lt;result&gt;`标签)来...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.5.2.4 用Spring 2.0 的aop和tx声明式配置解决事务提交问题 247 10.5.2.5 用Spring 2.0 的@Transactional标注解决事务提交问题(最佳方案) 251 10.5.2.6 使用 HibernateTemplate 实现分页查询 254 10.6 小结 255 ...

    java面试总结.pdf

    - 拦截器是基于Java的动态代理或CGLIB,作用于Action调用前后,主要用于MVC框架,如SpringMVC和Struts2,可以对方法进行拦截。 - 过滤器基于Servlet API,作用于HTTP请求和响应之间,可以处理所有HTTP请求,包括静态...

Global site tag (gtag.js) - Google Analytics