`
z_xiaofei168
  • 浏览: 198375 次
  • 性别: 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拦截器

    关于struts2 拦截器的详细的解释及其在开发中对struts2的拦截器的应用和拦截器在框架中的作用.

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

    NULL 博文链接:https://cmexico.iteye.com/blog/621208

    Struts2的拦截器的使用详解

    Struts2的拦截器的使用详解实例 博文链接:https://zmx.iteye.com/blog/457434

    struts2拦截器详解 带demo

    struts2拦截器详解,通过一个简单的例子让大家明白sturts2拦截器使用方法。

    Struts2拦截器详解源码

    Interceptor拦截器详解和部分源码的指导,方便深入学习struts2,增加理解

    Struts2详解,Struts2与Struts1的区别

    新手必备,看完绝对思路清晰。醍醐灌顶啊! 一. Struts2介绍 1. Struts2简介 2. Struts2和Struts1的常见区别 ... Struts2的拦截器 13. 拒绝表单重复提交 四. OGNL表达式 五. Struts2中常用标签

    struts-2.3.16.3-lib

    只有jar包struts-2.3.16.3-lib 里面有我的struts2帮助文档.chm Struts2标签库详解.pdf Struts2配置文件详解--精品版.pdf 使用Struts2的拦截器实现权限控制.doc 这些东西用来学习Struts2应该够了

    Struts2利用拦截器实现权限控制

    利用Struts2的核心技术----拦截器实现权限控制。详细代码详解

    struts2 详解文档

    自定义拦截器 对Action中所有方法进行输入校验 对Action指定方法进行校验 输入校验的流程 基于XML配置方式实现对action的所有方法进行校验 基于XML配置方式实现对指定action方法校验 配置国际化全局资源文件、...

    详解Struts2拦截器机制

    主要介绍了详解Struts2拦截器机制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    IBM Struts2培训PPT.7z

    IBMStruts2培训PPT (大全集) 主讲:刘雷 完整实用 第一章:认识体验Struts2.ppt 第二章:struts2架构剖析.ppt 第三章:struts2配置详解.ppt ...第九章:struts2拦截器.ppt + Struts2开发详解.ppt

    Struts2入门教程(全新完整版)

    1.概述strust2中的拦截器 28 2.自定义拦截器 28 方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 ...

    struts2源码详解

    本案例对struts2拦截器的技术做了详细的解答,希望能有用

    Java详解ModelDriven和Preparable拦截器.doc

    Java详解ModelDriven和Preparable拦截器 本资源主要讲解了Java中的ModelDriven和Preparable拦截器,旨在解决Action类中包含JavaBean的业务属性的问题。通过使用ModelDriven拦截器,可以将冗余代码抽取出来,把操作...

    Struts2之Action接收请求参数和拦截器详解

    主要介绍了Struts2之Action接收请求参数和拦截器详解,非常具有实用价值,需要的朋友可以参考下

    Java Web整合开发实战:基于Struts 2+Hibernate+Spring(PDF)

    8章 Struts之拦截器使用技巧 9章 在Struts中应用Ajax技术 10章 Struts之项目实战 3篇 持久层框架Hibernate技术 11章 Hibernate快速上手 12章 精解Hibernate之核心文件 13章 探究Hibernate之核心接口 14章 ...

    java中的Struts2拦截器详解

    本篇文章主要介绍了java中的Struts2拦截器浅解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    非常不错的中文struts2教程[CHM]

    内容: 1、OGNL —— 数据运转的催化剂 2、Result机制,让视图更丰富 3、Struts2配置详解 4、Struts2中的Action ...7、拦截器详解 8、配置,灵活还是简单? 9、深入plugin 10、在Struts2中使用OGNL

    struts快速入门的最好教程

    Struts2框架简介 Struts2历史 Struts2与MVC Struts2体系介绍 Struts2体系架构 ...Struts2拦截器 默认配置文件struts-default.xml概要说明 Struts2核心配置文件Struts.xml详解 Struts2的简单开发和配置

Global site tag (gtag.js) - Google Analytics