`

struts2学习之拦截器

阅读更多

拦截器是Struts2框架的核心内容之一,许多核心功能(避免表单重复提交,数据类型转换,数据校验,文件上传,国际化及权限管理等)都是通过拦截器实现的。

Struts2中的拦截器是面向切面编程(AOP)设计思想的实现。

拦截器的使用通常包含以下几步:

1.创建拦截器类。

拦截器类可以通过实现Interceptor接口(实现init(),destroy(),intercept()方法),也可以通过集成AbctractInterceptor类并重写intercept()方法。

package cn.bdx.intercepter;

import java.util.Map;

import cn.bdx.model.LoginUser;

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

public class MyInterceptor1 extends AbstractInterceptor{
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		//已登录作为实例
		Object action = invocation.getAction();
		if(action instanceof LoginUser) {
			return invocation.invoke();
		}
		Map<String,Object> session = invocation.getInvocationContext().getSession();
		LoginUser loginUser = (LoginUser)session.get("loginUser");
		if(loginUser != null){
			return invocation.invoke();
		}else {
			((ActionSupport) action).addActionMessage("您还没有登录");
			return "input";
		}
	}
}

 

2.注册拦截器

拦截器在struts2设计为可插拔的方式,即在使用对拦截器类进行注册,在不使用时直接删除掉即可

在struts.xml文件中进行配置

方式1:配置package全局的拦截器

<package name="default" namespace="/" extends="struts-default">
		<interceptors>
			<interceptor name="login" class="cn.bdx.intercepter.MyInterceptor1"></interceptor>
			<interceptor-stack name="myLoginStack">
				<interceptor-ref name="login">
					<param name=""></param>
				</interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="myLoginStack" />
	</package>

 注:interceptor标签用于配置自己的拦截器,interceptor-stack用于自定义自己的拦截器的stack,default-interceptor-ref的配置表明在这个package包中使用myLoginStack这个拦截器。

方式2:action内部的拦截器

<package name="default" namespace="/" extends="struts-default">
		<interceptors>
			<interceptor name="login" class="cn.bdx.intercepter.MyInterceptor1"></interceptor>
		</interceptors>
		<action name="login" class="cn.bdx.controller.LoginUserController" method="login1">
			<interceptor-ref name="login"></interceptor-ref>
		</action>
	</package>

注:Struts2中有许多内置的拦截器,详细内容可以查看struts-default.xml文件内容。

分享到:
评论

相关推荐

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    struts2.X 拦截器源码

    Struts2.X 拦截器是Apache Struts框架的核心组件之一,它是基于拦截器模式实现的,使得开发者能够方便地扩展和定制应用程序的行为。在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如...

    struts2学习笔记十(第10讲.Struts2的核心 拦截器)

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑和控制流程分离开来的重要组件。本篇将深入探讨Struts2的核心拦截器以及其工作原理。 在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它通过...

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    struts2拦截器应用小例子

    通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用程序的行为。 总结来说,Struts2的拦截器机制提供了强大的功能,允许开发者以声明式的方式控制请求的...

    自定义拦截器struts2源代码

    拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能监控等。自定义拦截器可以扩展Struts2的功能,使我们的应用更加灵活和模块化。...

    Struts2简单的拦截器示例

    拦截器是Struts2的核心组件之一,它们在Action调用前后执行,允许开发者插入额外的功能,如日志、权限检查、性能度量等,而无需修改Action本身。这个“Struts2简单的拦截器示例”是为初学者设计的,旨在帮助理解如何...

    struts2学习笔记十一(第11讲.Struts2的核心 拦截器续)

    在本篇“Struts2学习笔记十一”中,我们将深入探讨Struts2的核心拦截器及其应用。 **1. 拦截器的概念** 拦截器是AOP(面向切面编程)的一部分,在Struts2中,它们作为一系列可插入的处理链,可以在Action执行前后...

    struts拦截器的例子

    这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架是MVC(Model-View-Controller)设计模式的一个实现,它允许开发者构建可维护、可扩展的Web...

    Struts2之拦截器原理分析及使用-上案例struts007

    接下来,我们将通过案例"struts007"来学习拦截器的配置与使用。在Struts2的配置文件(如struts.xml)中,可以定义一个拦截器或者拦截器栈。拦截器栈是由多个拦截器按照特定顺序组成的,每个拦截器都有自己的名字和...

    Struts2_自定义拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着类似中间件的角色,可以在动作执行前后执行一些预处理或后处理任务。自定义拦截器是扩展Struts2功能的重要手段,允许开发者根据项目需求实现特定的行为。 在Struts2...

    struts2中拦截器的使用

    拦截器是Struts2框架的核心组件之一,它们在Action调用前后执行,提供了诸如日志记录、权限验证、数据校验等额外功能,极大地提高了代码的可复用性和可维护性。 在Struts2中,拦截器的使用主要基于两个方面:配置...

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

    拦截器(Interceptors)是Struts2的核心特性之一,它们提供了一种灵活的方式来增强或者修改请求处理流程,而无需在Action类中添加额外的代码。在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨...

    简单介绍Struts2中的拦截器的小示例

    而`Struts2.782`可能是Struts2的一个版本,其中包含了框架的核心库和示例代码,可以帮助进一步理解和学习拦截器的使用。 通过这个小示例,初学者可以了解到Struts2拦截器的基本概念、配置方式以及如何自定义拦截器...

    struts2学习之九---拦截器

    拦截器是Struts2的核心特性之一,它在MVC设计模式中起到了承上启下的作用,增强了框架的功能和灵活性。在Struts2中,拦截器可以理解为一种AOP(面向切面编程)的概念,它们在动作执行前后进行额外的操作,比如日志...

    Struts2_拦截器

    在本节内容中,我们将对Struts2框架中的拦截器概念进行基础介绍,包括拦截器的定义、作用、编写和配置方法。拦截器是Struts2框架中用于增强Action组件功能的重要机制,允许开发者在Action执行前后或执行过程中进行...

    Struts2学习教程之拦截器机制与自定义拦截器

    Struts2学习教程之拦截器机制与自定义拦截器 Struts2框架中,拦截器机制是其重要组成部分,不夸张的说,没有拦截器体系,也就没有这么好用的Struts2框架了。在Struts2框架中,大量的拦截器完成了很多基础的功能,...

    Struts拦截器案例——登陆

    Struts拦截器是Java Web开发中的一个重要概念,尤其在基于Struts2框架的应用中,它扮演着处理...通过学习这个案例,开发者可以更好地理解和掌握Struts2框架中的拦截器机制,从而在实际项目中实现更高效、灵活的控制流。

    struts2自定义拦截器

    Struts2是一个强大的Java web应用程序框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式。在Struts2中,拦截器是实现...理解并熟练掌握自定义拦截器的创建和配置,是深入学习和使用Struts2框架的关键。

    struts2 学习重点笔记

    - **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...

Global site tag (gtag.js) - Google Analytics