拦截器的作用:

  拦截器可以动态地拦截发送到指定Action的请求,通过拦截器机制,可以载Action执行的前后插入某些代码,植入我们的逻辑思维。

拦截器的实现原理:

  拦截器通过代理的方式来调用,通过动态代理我们的Action,在Action的执行前后植入我们的拦截代码。这种拦截器的思想就是一种AOP,取得业务处理过程的切面,在特定切面

通过系统自动插入特定方法。

                

Struts2中的拦截器:

  在平常的项目中,我们经常需要解析上传表单中的文件域,防止表单多次提交……,这些操作不是所有Action都需要实现的动作,需要以动态的方式自由组合。拦截器策略就

很好解决了这个问题,拦截器方法在目标方法执行之前或者执行之后自动执行,从而完成通用操作的动态插入。

            

拦截器的配置:

  定义一个拦截器:

<interceptor name="拦截器名字" class="拦截器实现类">
<param name="参数名">参数值</param>
</interceptor>

  也可以定义一个拦截器栈,这个拦截器栈是包含了多个拦截器的。

<interceptor-stack name="拦截器栈名">
<interceptor-ref name="拦截器一"/>
<interceptor-ref name="拦截器二"/>
</interceptor-stack>

自定义拦截器:

  开发自己的拦截器类,首先我们来看看Interceptor是怎么样。

public interface Interceptor extends Serializable {
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
}

  从上面的代码可以知道,init方法初始化类,destroy方法就是销毁类,intercept方法就是你实际的拦截内容了。除此之外,Struts2为我们提供了一个AbstractInterceptor类,我们可以通过继承这个类来减少代码量,下面开始实现自己的拦截器。

@SuppressWarnings("serial")
public class ShowTimeInterceptor extends AbstractInterceptor {
private String name; @Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("I am " + name);
System.out.println(name + " : " + new Date());
String result = actionInvocation.invoke();
System.out.println(name + " : " + new Date());
return result;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

  然后在struts.xml中配置信息:

<interceptors>
<interceptor name="showTime" class="com.xujianguo.action.interceptor.ShowTimeInterceptor">
<param name="name">ShowTimeInterceptor</param>
</interceptor>
</interceptors>
<action name="login" class="com.xujianguo.action.LoginAction">
<result name="success">/login-success.html</result>
<result name="error">/login.html</result>
        <!-- 默认的拦截器defaultStack -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="showTime"></interceptor-ref>
</action>

Struts2的拦截器的更多相关文章

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

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  2. struts2总结六: Struts2的拦截器

    一.Struts2的系统结构图

  3. Struts2使用拦截器完成权限控制示例

    http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求:    要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...

  4. Struts2自定义拦截器Interceptor以及拦截器登录实例

    1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...

  5. struts2之拦截器

    1. 为什么需要拦截器 早期MVC框架将一些通用操作写死在核心控制器中,致使框架灵活性不足.可扩展性降低, Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选择和组合,增强了灵活性,有利于 ...

  6. Struts2【拦截器】就是这么简单

    什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...

  7. 【struts2】拦截器基础

    1)拦截器是什么? 拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制.来回顾一下官方给出的Strut ...

  8. JavaWeb框架_Struts2_(三)---->Struts2的拦截器

    2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...

  9. (转)Struts2的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/68648101 Struts2的拦截器 拦截器的概述 拦截器,在AOP(Aspect-Orien ...

  10. 通俗易懂之SpringMVC&Struts2前端拦截器详解

    直接进入主题吧!一,配置Struts2的拦截器分两步走1配置对应的拦截器类:2在配置文件Struts.xml中进行配置拦截器同时在Strust2中配置拦截器类有三种方法1实现Interceptor接口 ...

随机推荐

  1. freemarker定义自己的标记(三)-nested说明

    freemarker定义自己的标记 1.nested指令 是可选的,能够在<#macro>和</#macro>之间使用在不论什么位置和随意次数 2.演示样例说明 <#ma ...

  2. C#精华(文章3版本)笔记

    C#精华(文章3版本) 跳转至: 导航. 搜索 文件夹 1 C#概述 2 数据类型 3 运算符和控制流 4 方法和參数 5 类 6 继承 7 接口 8 值类型(struct) 9 合式类型 10 异常 ...

  3. CQRS

    CQRS 2015-06-04 15:33 by 敏捷的水, 177 阅读, 0 评论, 收藏, 编辑 CQRS是Command Query Responsibility Seperation(命令查 ...

  4. ftp设置(2015-04-04)[转]

    anonymous_enable=YES /允许匿名访问 12行local_enable=YES /允许本地用户访问(/etc/passwd中的用户) 15行write_enable=YES /允许写 ...

  5. Apache conf文件配置个人总结

      其实说到conf文件的配置,网上那必定是大堆大堆的,故今儿写着篇小博文,也只是做个总结,至于分享的价值吗,如果对屏幕前的你有用,我也很乐意啦.   首先,我们要找到Apache安装目录,我的是Ap ...

  6. StyleCop中有一些官方自己写好的检测规则下面就是英文的解释

    在StyleCop中有一些官方自己写好的检测规则下面就是英文的解释 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialEl ...

  7. ASP.NET 5简介

    ASP.NET 5简介 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 2015-05-13 09:14 by 汤姆大叔, 3379 阅读, 39 评论, 收藏, 编辑 ...

  8. Tiptop二二次开发系列

    易拓GP 4gl二二次开发系列.使用文档工具的深度开发,包装分享. 包含文件: Genero BDL HB 2.0 .pdf Genero Studio 4GL官方开发手冊.pdf 下载地址:http ...

  9. 如何利用百度音乐播放器的API接口来获取高音质歌曲

    第一步:在网页中打开以下网址: http://box.zhangmen.baidu.com/x?op=12&count=1&title=时间都去哪儿了$$王铮亮$$$$ 其中红色地方可 ...

  10. 【LeetCode】Set Matrix Zeroes 解题报告

    今天看到CSDN博客的勋章换了图表,同一时候也添加显示了博客等级,看起来都听清新的,感觉不错! [题目] Given a m x n matrix, if an element is 0, set i ...