`
z_xiaofei168
  • 浏览: 200990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2详解(三)---->>拦截器

阅读更多

struts2详解(三)---->>拦截器

 

 拦截器介绍:

    1、使用拦截器可以实现横切功能并使这些实现相对action甚至Struts2框架保持独立。
    2、可以实现和使用自己所需的特性且不用修改框架的底层代码。
    3、使用拦截器可以达到以下目的:


          在调用Action之前,提供预处理逻辑
          与Action进行交互,提供执行信息,比如设置请求中的参数
          在调用Action之后,提供后处理逻辑
          修改返回的结果,进而修改呈现给用户的内容
          捕获异常从而替换可执行的处理过程或返回一个不同结果

 

 下面就通过一个小的案例来:

 

 index.jsp

 

<body>
       <a href="csdn/uploads.action?name='z_xiaofei168'">查看</a>
</body>

 

 UserAction.java

 

 

package cn.csdn.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;

	private String name;

	public String getName() {
		return name;
	}

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

	@Override
	public String execute() throws Exception {
		System.out.println("你传的值是:"+name);
		return SUCCESS;
	}

}

 

  MyDateInterceptor.java

 

 

package cn.csdn.strut2.interceptors;

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

public class MyDateInterceptor implements Interceptor{

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;

	public void destroy() {
		System.out.println("struts2框架关闭时销毁......");		
	}

	public void init() {
		System.out.println("struts2框架加载时启动......");		
	}

	public String intercept(ActionInvocation ai) throws Exception {
		System.out.println("拦截器执行......");
		long beforetime = System.currentTimeMillis();
		String obj = ai.invoke();
		long aftertime = System.currentTimeMillis();
		System.out.println("执行的时间是:"+(aftertime-beforetime)+" ms");
		return obj;
	}

}

 

   备注:

         Interceptor接口与AbstractInterceptor
         init() 方法用来初始化拦截器
         destroy()方法为拦截器提供清理
         intercept()方法为拦截器处理业务规则
        其中,init()和destroy()仅在Struts2初始化时和框架关闭时分别执行一次,而intercept()会在每次请求中都会被调用,所以拦截器需要线程安全,尤其是intercept()方法。

 

  配置文件:struts.xml

 

 

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<package name="csdn" extends="struts-default" namespace="/csdn">

		<!-- 声明自定义拦截器 -->
		<interceptors>
			<interceptor name="myTimer"
				class="cn.csdn.strut2.interceptors.MyDateInterceptor" />
			<!-- 自己定义的拦截器栈 -->
			<interceptor-stack name="mystack">
				<!-- 使用struts2自带拦截器-->
				<interceptor-ref name="timer" />
				<!-- 使用自定义的拦截器 -->
				<interceptor-ref name="myTimer" />
				<!-- 引用struts2中默认的拦截器栈 -->
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>

		<!-- 使用自己定义的拦截器栈作为默认的拦截器栈 -->
		<default-interceptor-ref name="mystack" />

		<!-- 全局结果集 -->
		<global-results>
			<result name="input">/index.jsp</result>
		</global-results>

		<!-- action -->
		<action name="upload" class="cn.csdn.struts2.action.UserAction"
			method="execute">
			<!--
				使用struts2自带拦截器 <interceptor-ref name="timer"/>
			-->
			<!-- 使用自定义的拦截器 
                <interceptor-ref name="myTimer"/>
            -->
			<result>/index.jsp</result>
		</action>

		<!-- action -->
		<action name="uploads" class="cn.csdn.struts2.action.UserAction"
			method="execute">
			<!--
				自定义拦截器栈的引用 <interceptor-ref name="mystack"/>
			-->
			<result>/index.jsp</result>
		</action>

		<!-- action -->
		<action name="uploadss" class="cn.csdn.struts2.action.UserAction"
			method="execute">
			<result>/index.jsp</result>
		</action>
	</package>
</struts>

  

   最后的执行结果是:

 

   当你点击“查看”时,运行结果如下图所示:

  

  

 

   当你点击“查看”时,运行结果如下图所示:

 

 

 

 

 比较运行两次结果的不同

 

 

 

 

 

2
3
分享到:
评论

相关推荐

    struts2-tags-文档.rar

    "struts2.chm"可能是Struts2的基础教程,涵盖了框架的基本概念、配置、动作、拦截器等核心组件。在这个文档中,你可以了解到如何设置Struts2的配置文件,如何创建Action类,以及如何使用拦截器进行业务逻辑处理。...

    详解Struts2拦截器

    ### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...

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

    - XML配置:在`struts.xml`文件中,使用`&lt;interceptor&gt;`元素定义拦截器,`&lt;interceptor-stack&gt;`元素组合多个拦截器,`&lt;package&gt;`元素下的`interceptors`属性指定拦截器栈。 ```xml &lt;interceptors&gt; ...

    struts框架搭建

    Struts2支持拦截器、动态方法调用等高级功能,同时还具有高度可扩展性。 #### 二、Struts2框架环境搭建 ##### 1. 开发环境准备 - **JDK**:确保安装了JDK。 - **Eclipse**或**MyEclipse**:作为开发工具。 - **...

    Struts2的拦截器的使用详解

    2. 拦截器配置:在struts.xml配置文件中,你可以定义多个拦截器,并通过`&lt;interceptor&gt;`和`&lt;interceptor-stack&gt;`元素来组织它们。例如,创建一个名为`myInterceptorStack`的拦截器栈,包含`logging`和`validation`两...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    实验三-Struts2框架编程-实验报告纸.doc

    3. **掌握Struts2拦截器的原理及其编程**:了解拦截器如何工作,如何编写自定义拦截器来扩展框架的功能。 4. **实现文件上传等功能**:学会利用Struts2框架实现文件上传等常见功能。 #### 二、实验内容 1. **创建...

    struts2框架详解

    - 拦截器是Struts2的一大特色,它们按照预定义的顺序组成栈,每个请求都会经过这些拦截器。 - 常见的拦截器有:`Params`(处理请求参数),`Validation`(表单验证),`StackTrace`(异常堆栈跟踪)等。 6. **...

    Struts2配置详解

    `&lt;package&gt;`节点是Struts2配置文件中的一个非常重要的组成部分,它用于组织相关的配置项,如Action的定义、拦截器的配置以及结果类型的设定等。`&lt;package&gt;`节点可以包含以下子节点: 1. **`&lt;action&gt;`** - 定义一个...

    struts2深入详解源码1-5章

    第三章涉及了Struts2的拦截器(Interceptor)。拦截器是Struts2的一大特色,它允许在Action执行前后插入自定义的处理逻辑。常见的拦截器有Params拦截器,用于参数绑定;Validation拦截器,进行字段验证;StackTrace...

    spring-mybatis-struts2-master ——demo

    3. 配置Struts2:配置struts.xml,定义Action及其结果,设置拦截器栈。 4. 配置MyBatis:创建mybatis-config.xml,定义数据源、事务工厂,以及Mapper接口和XML映射文件的路径。 5. 创建实体类、Mapper接口和XML映射...

    struts2入门实例教程详解

    Struts2基于WebWork,这意味着它引入了拦截器、结果类型等概念,提供更灵活的控制流。 #### 三、创建Struts2项目 按照Struts1.x的程序开发步骤,我们可以逐一对应到Struts2中: 1. **安装Struts2:** - 不同于...

    struts2-057-exp

    - **使用安全配置**:启用Struts2的安全配置选项,如使用XWork拦截器来阻止恶意请求。 7. **应急响应** 发现系统受此漏洞影响后,应立即停止使用受影响的服务,评估漏洞影响范围,然后按照上述防御策略进行修复,...

    Struts2拦截器详解源码

    Struts2 拦截器(Interceptor)是框架的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,极大地增强了应用的灵活性和可维护性。与Servlet规范中的Filter相比,虽然两者都用于处理请求,但拦截器在...

    一个Struts2的核心拦截器例子

    核心拦截器是Struts2框架的重要组成部分,它们允许开发者在动作执行前后插入自定义逻辑,以实现如日志、权限验证、数据校验等常见功能。下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2...

    struts2拦截器详解 带demo

    Struts2 拦截器详解 Struts2 框架中的拦截器(Interceptor)是一种强大的机制,它允许开发者在Action执行前后插入自定义的行为,增强了应用的灵活性和可扩展性。拦截器是基于Java的动态AOP(面向切面编程)实现,...

    struts2-hibernate-spring-configfile.rar_struts2_struts2 spring

    `struts-default.xml`通常包含默认的拦截器栈和全局结果,而`struts-plugin.xml`则用于定义Struts2和其他框架(如Spring)的集成。在Struts2与Spring集成时,我们需要在`struts.xml`中声明Action类,并通过Spring...

Global site tag (gtag.js) - Google Analytics