<!-- 实现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指拦截的对象
相关推荐
4. **连接Struts2和Spring**:在Struts2的配置文件(如`struts.xml`)中,我们需要配置Action类以使用Spring的依赖注入,这样Spring才能识别并应用AOP代理。 在实际的项目中,我们还需要考虑如何处理自定义参数。...
在提供的"springinaction_aop"压缩包文件中,可能包含了关于Spring AOP的实例代码和解释,包括注解和XML配置的示例,以及如何处理参数的具体应用。通过阅读和学习这些材料,你可以更好地理解和掌握Spring AOP的用法...
- **工作原理**:Struts2基于拦截器(Interceptor)模式,通过配置Action和结果来处理请求并展示相应的视图。 - **Action**:它是业务逻辑的载体,负责接收请求,执行业务操作,并返回结果。 - **结果映射**:...
3. **Spring AOP**:书中可能会详细阐述如何定义和使用切面,以及如何配置通知类型(如前置通知、后置通知、环绕通知)以实现跨切面的关注点。 4. **Spring Boot**:随着Spring Boot的流行,该书可能也涵盖了Spring...
- **实现方式**:在Spring框架中,AOP可以通过代理模式实现,比如使用环绕通知、前置通知等。 - **应用场景**: - 日志记录:在方法执行前后记录日志信息。 - 安全控制:拦截特定的方法调用,进行权限验证。 - ...
在Spring AOP中,通知(Advice)是一种特定类型的切面,它定义了切面应该执行的行为。Spring支持五种类型的通知: 1. **前置通知**:在目标方法执行前调用。 2. **后置通知**:无论方法是否成功执行,都会在其后...
1. **模型层集成**:Spring的DAO和Service层可以作为Struts的Action类的后台支持。 2. **视图层集成**:Spring MVC与Struts的视图层可以协同工作,提供更灵活的展现方式。 3. **事务管理集成**:Spring的声明式...
当系统中的Action调用Service方法时,AOP机制会在方法调用前进行拦截,检查该方法是否被声明为需要权限控制。如果方法被标记,系统将进一步验证用户是否具备访问该方法所需的权限。若用户无权访问,将抛出`...
### AspectJ in Action 第二版:企业级AOP与Spring应用深入解析 #### 知识点一:AspectJ概述及特点 - **AspectJ简介**:AspectJ是一种面向切面编程(AOP)语言,它扩展了Java语言,提供了一种更强大的方式来处理...
1. **配置Spring**:在Spring的配置文件中,定义Action的Bean,并使用AOP的`<aop:config>`或`<aop:aspect>`标签来声明切面。例如,我们可以创建一个切面来实现事务管理。 2. **配置Struts**:在`struts.xml`中,...
- **拦截器 (Interceptor)**: 在 Struts2 中,拦截器是一个重要的概念,它可以拦截 Action 的执行过程,执行前置和后置操作。例如,可以在 Action 执行前后进行权限验证、日志记录等操作。 - **拦截器定义**: 拦截...
读者会学习到如何定义切面、通知类型(前置、后置、环绕、异常、最终通知)、切入点表达式,以及如何在Spring中实现AOP代理。 3. **事务管理**:Spring提供了强大的事务管理功能,支持编程式和声明式事务。书中会...
2. **Spring AOP**:学习如何定义切面、通知类型(前置、后置、环绕等),并应用到实际业务场景中。 3. **Spring事务管理**:掌握Spring的编程式和声明式事务管理,了解事务的ACID属性和传播行为。 4. **Struts2基础...
- **struts-spring-plugin.jar的内部实现**:该插件通过拦截器来获取Spring容器中的Action对象,并将其传递给Struts2框架处理。 #### 十、Spring的事务管理 - **声明式事务管理(基于配置方式实现事务控制)**:...
- 用户请求到达.do,Struts拦截器处理请求,ActionServlet调用Action,Action执行业务逻辑,然后根据结果转发到相应的JSP页面。 以上内容涵盖了Java面试中涉及的Spring AOP、Struts、Hibernate和Spring框架的相关...
- **执行Action**:在所有前置拦截器执行完毕后,实际的`Action`方法被执行,之后可能还会有一些后置拦截器处理数据。 - **结果返回**:根据`Action`的执行结果,在`struts.xml`中定义的结果(`<result>`标签)来...
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的动态代理或CGLIB,作用于Action调用前后,主要用于MVC框架,如SpringMVC和Struts2,可以对方法进行拦截。 - 过滤器基于Servlet API,作用于HTTP请求和响应之间,可以处理所有HTTP请求,包括静态...