`
Luob.
  • 浏览: 1586426 次
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 拦截器的执行顺序(二十九)

阅读更多
1.如果一个系统中配置了多个拦截器,根据拦截器配置的顺序不同,执行拦截器的顺序也不一样。通常认为,先配置的拦截器,会先获得执行的机会,但是实际情况不是这样。execute()方法执行之前,配置在前面的拦截器,会先对用户的请求起作用。execute()方法执行之后,配置在后面的拦截器,会先对用户的请求起作用。(两头向中间靠拢的执行)

定义拦截器
package com.sh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class DefaultInterceptor extends AbstractInterceptor{

	private String name;
	
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println(name+"执行了。。。");
		String result=invocation.invoke();
		System.out.println(name+"执行完毕。。。");
		return result;
	}
	
}

action
package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class DefaultAction extends ActionSupport {
	public String execute(){
		return SUCCESS;
	}
}

struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts> 
	<!-- 如果 注解的action配置改变时候不需要重新启动tomcate -->
	<constant name="struts.devMode" value="false"/>  
    <constant name="struts.convention.classes.reload" value="true" /> 
	
	<package name="default" extends="struts-default">
		<interceptors>
			<interceptor name="inter1" class="com.sh.interceptor.DefaultInterceptor"/>
			<interceptor name="inter2" class="com.sh.interceptor.DefaultInterceptor"/>
			<interceptor name="inter3" class="com.sh.interceptor.DefaultInterceptor"/>
		</interceptors>
		<action name="default" class="com.sh.action.DefaultAction">
			<result>/index.jsp</result>
			<interceptor-ref name="inter1">
				<param name="name">拦截器1</param>
			</interceptor-ref>
			<interceptor-ref name="inter2">
				<param name="name">拦截器2</param>
			</interceptor-ref>
			<interceptor-ref name="inter3">
				<param name="name">拦截器3</param>
			</interceptor-ref>
			<interceptor-ref name="defaultStack"/>
		</action>
	
	</package>
    
</struts>

--访问
http://localhost:8080/Struts2_interceptorSort/default.action

--控制台的信息 如下
拦截器1执行了。。。
拦截器2执行了。。。
拦截器3执行了。。。
拦截器3执行完毕。。。
拦截器2执行完毕。。。
拦截器1执行完毕。。。

1
8
分享到:
评论

相关推荐

    Struts2拦截器及其用法详细说明

    3. 在Struts2的配置文件(struts.xml)中声明并配置拦截器,指定拦截器的执行顺序和作用范围。 **四、拦截器的配置** Struts2的拦截器可以通过XML或注解两种方式进行配置: - XML配置:在`struts.xml`文件中,...

    struts2 拦截器

    2. **配置拦截器**:在`struts.xml`配置文件中定义拦截器,指定其执行顺序和关联的Action。 3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到...

    Struts2 拦截器注解(二十七)

    通过在`struts.xml`配置文件中定义拦截器栈,我们可以控制拦截器的执行顺序和行为。 然而,Struts2从2.1版本开始引入了拦截器注解,使得无需在配置文件中显式声明拦截器,就可以直接在Action类或方法上使用注解来...

    struts2 拦截器实例

    2. **拦截器栈**:在Struts2中,拦截器可以组成一个栈,按照栈的顺序执行。当请求到达Action时,会先执行栈中的所有拦截器,然后执行Action,最后再按相反的顺序返回。 3. **配置拦截器**:拦截器可以通过Struts2...

    struts2拦截器

    3. 在调用Action之前,Struts2会按照配置的顺序依次执行拦截器链。 4. 每个拦截器可以决定是否允许请求继续传递到下一个拦截器或直接终止。例如,一个登录拦截器可能会检查用户是否已登录,如果未登录则跳转到登录...

    Struts2 拦截器

    通过在`struts.xml`或`struts-plugin.xml`配置文件中定义拦截器栈,可以指定拦截器的执行顺序。 以下是一些常见的Struts2内置拦截器及其用途: 1. `params`:负责从请求参数中填充Action属性。 2. `i18n`:处理国际...

    Struts2拦截器实现权限控制demo

    在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...

    Struts2拦截器原理分析

    2. **拦截**:当一个请求到达Action时,Struts2会根据配置的拦截器栈顺序,先调用每个拦截器的`intercept()`方法,然后才执行Action的业务逻辑。 3. **后处理**:Action执行完毕后,Struts2会逆序遍历拦截器栈,调用...

    struts2拦截器应用小例子

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在动作执行前后插入自定义的逻辑,如日志、权限检查、数据验证等。本示例将探讨如何在Struts2中使用拦截器。 首先,我们需要理解Struts2拦截器的...

    Struts2拦截器源程序

    当一个请求被发送到Struts2框架时,拦截器会按照配置的顺序依次对请求进行处理。每个拦截器都有`intercept()`方法,这个方法会在动作执行前和执行后被调用,允许开发者插入预处理和后处理逻辑。 **2. 拦截器的工作...

    Struts2拦截器源码

    3. 依据配置的Interceptor Stack(拦截器栈),Struts2会按顺序调用每个拦截器的`intercept`方法。 4. 在`intercept`方法中,通常会先调用`ActionInvocation`的`invoke`方法,这将执行下一个拦截器或者直接执行...

    Struts2 拦截器过滤方法(二十八)

    在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨Struts2拦截器的工作原理、如何创建自定义拦截器以及它们在实际应用中的作用。 首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行...

    struts2拦截器实现拦截不文明字迹

    当一个请求到来时,Struts2会按照配置的顺序依次执行这些拦截器,最后调用Action方法。 要实现拦截不文明字迹,我们首先需要创建一个自定义的拦截器类。这个类需要继承自`...

    创建自己struts2拦截器

    Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。...记得在开发过程中,合理地组织拦截器栈,以保证拦截器的执行顺序符合预期。

    使用struts2拦截器对登陆权限验证

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    struts2拦截器国际化

    Struts2的拦截器是一种AOP(面向切面编程)的概念,它在Action调用前后执行特定的逻辑,如日志记录、权限验证、数据校验等。拦截器通过配置在struts.xml或struts-plugin.xml文件中,按照定义的顺序进行调用。每个...

    简单理解Struts2中拦截器与过滤器的区别及执行顺序

    Struts2 中拦截器与过滤器的区别及执行顺序 Struts2 中的拦截器(Interceptor)和过滤器(Filter)是两个不同的概念,虽然它们都可以影响请求的处理过程,但它们的作用域、执行顺序和实现机制都有所不同。 拦截器...

    struts2拦截器原理

    这些拦截器按照配置的顺序逐个执行,每个拦截器执行完毕后,会将控制权传递给下一个拦截器,直到最后一个拦截器执行完后再调用Action的`execute`方法。当`execute`方法执行完毕,控制权会反向传递回之前的拦截器,...

    struts2拦截器实现权限控制

    3. 配置拦截器栈:Struts2使用拦截器栈的概念,即将多个拦截器组织成一个栈,按照栈的顺序依次执行。在`struts.xml`中,可以创建一个或多个拦截器栈,并将权限拦截器包含在内。 4. 应用拦截器:在Action配置中,...

Global site tag (gtag.js) - Google Analytics