为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Struts2拦截器

2018-04-10 6页 doc 27KB 27阅读

用户头像

is_882336

暂无简介

举报
Struts2拦截器Struts2拦截器 随笔 - 2, 文章 - 7, 评论 - 0, 引用 - 0 浅谈Struts2拦截器的原理与实现 Struts2拦截器是Struts2中的一个很重要的功能。本文将从概念开始,为大家讲解Struts2拦截器的实现原理以及如何定义等等内容 AD: 一、理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是,,,的一种实现( 2. 拦截器栈(Interceptor Stack)。...
Struts2拦截器
Struts2拦截器 随笔 - 2, 文章 - 7, 评论 - 0, 引用 - 0 浅谈Struts2拦截器的原理与实现 Struts2拦截器是Struts2中的一个很重要的功能。本文将从概念开始,为大家讲解Struts2拦截器的实现原理以及如何定义等等内容 AD: 一、理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是,,,的一种实现( 2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。 二、实现Struts2拦截器原理 Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器 三、定义Struts2拦截器。 Struts2规定用户自定义拦截器必须实现 com.opensymphony.xwork2.interceptor.Interceptor接口。该接口声明了3个方法, void init(); void destroy(); String intercept(ActionInvocation invocation) throws Exception; 其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。 不过,struts中又提供了几个抽象类来简化这一步骤。 public abstract class AbstractInterceptor implements Interceptor; public abstract class MethodFilterInterceptor extends AbstractInterceptor; 都是模板方法实现的。 其中AbstractInterceptor提供了init()和destroy()的空实现,使用时只需要覆盖intercept()方法; 而MethodFilterInterceptor则提供了includeMethods和excludeMethods两个属性,用来过滤执行该过滤器的action的方法。可以通过param来加入或者排除需要过滤的方法。 一般来说,拦截器的写法都差不多。看下面的示例: package interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class MyInterceptor implements Interceptor { public void destroy() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("Action执行前插入 代码"); //执行目标方法 (调用下一个拦截器, 或执行Action) final String res = invocation.invoke(); System.out.println("Action执行后插入 代码"); return res; } } 四、配置Struts2拦截器 Struts2拦截器需要在struts.xml中声明,如下struts.xml配置文件 /index.jsp /success.jsp 拦截器 名字 说明 Alias Interceptor alias 在不同请求之间将请求参数在不同名字 件转换,请求内容不变 Chaining Interceptor chain 让前一个Action的属性可以被后一个 Action访问,现在和chain类型的result ()结合使用。 Checkbox Interceptor checkbox 添加了checkbox自动处理代码,将没有 选中的checkbox的内容设定为false, 而html默认情况下不提交没有选中的 checkbox。 Cookies Interceptor cookies 使用配置的name,value来是指cookies Conversion Error conversionError 将错误从ActionContext中添加到ActionInterceptor 的属性字段中。 Create Session createSession 自动的创建HttpSession,用来为需要使Interceptor 用到HttpSession的拦截器服务。 Debugging Interceptor debugging 提供不同的调试用的页面来展现内部的 数据状况。 Execute and Wait execAndWait 在后台执行Action,同时将用户带到一Interceptor 个中间的等待页面。 Exception Interceptor exception 将异常定位到一个画面 File Upload Interceptor fileUpload 提供文件上传功能 I18n Interceptor i18n 用户选择的locale Logger Interceptor logger 输出Action的名字 Message Store store 存储或者访问实现ValidationAware接口Interceptor 的Action类出现的消息,错误,字段错 误等。 Model Driven Interceptor model-driven 如果一个类实现了ModelDriven,将 getModel得到的结果放在Value Stack 中。 Scoped Model Driven scoped-model-driven 如果一个Action实现了 ScopedModelDriven,则这个拦截器会从 相应的Scope中取出model调用Action 的setModel方法将其放入Action内部。 Parameters Interceptor params 将请求中的参数设置到Action中去。 Prepare Interceptor prepare 如果Acton实现了Preparable,则该拦 截器调用Action类的prepare方法。 Scope Interceptor scope 将Action状态存入session和 application的简单方法。 Servlet Config Interceptor servletConfig 提供访问HttpServletRequest和 HttpServletResponse的方法,以Map 的方式访问。 Static Parameters staticParams 从struts.xml文件中将中的中的内容设Interceptor 置到对应的Action中。 Roles Interceptor roles 确定用户是否具有JAAS指定的Role, 否则不予执行。 Timer Interceptor timer 输出Action执行的时间 Token Interceptor token 通过Token来避免双击 Token Session tokenSession 和Token Interceptor一样,不过双击的Interceptor 时候把请求的数据存储在Session中 Validation Interceptor validation 使用action-validation.xml文件中定义的 内容校验提交的数据。 Workflow Interceptor workflow 调用Action的validate方法,一旦有错 误返回,重新定位到INPUT画面 Parameter Filter N/A 从参数列表中删除不必要的参数 Interceptor Profiling Interceptor profiling 通过参数激活profile posted on 2011-06-30 15:36 Z.Y 阅读(403) 评论(0) 编辑 收藏
/
本文档为【Struts2拦截器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索