• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > JSP 开发之Struts2内建自定义拦截器

JSP 开发之Struts2内建自定义拦截器

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了jsp内建对象,jsp中的9大内建对象,struts2拦截jsp页面,struts2拦截jsp,struts2重定向到jsp等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

JSP 开发之Struts2内建自定义拦截器

Struts2的自定义拦截器主要用于解析请求参数,将请求参数赋值给Action属性,执行数据校验,文件上传等等操作。当需要扩展Struts2的功能时,我们只需要提供相应的拦截器并将它配置到Struts2容器中即可;当我们不需要使用的时候,只需要取消它在Struts2容器中的配置就行了。

1>配置拦截器主要使用四个配置元素:

:用于配置自定义拦截器
:用于引用拦截器或者拦截器栈
:用于配置自定义拦截器栈,一个拦截器栈由多个拦截器构成,也可以包含其他的拦截器栈
:拥有配置参数

<!--配置自定义拦截器-->
<interceptor name="拦截器名" class="实现类">
  <param name>..</param>
  ...
</interceptor>

<!--配置拦截器栈,用于一次性过引用多个拦截器-->
<interceptor-stack name="拦截器栈名">
  <interceptor-ref name="拦截器1" />
  <interceptor-ref name="拦截器2">
    <param name>..</param>
    ...
  </interceptor-ref>
  <!--也可以引用拦截器栈-->
  <interceptor-ref name="拦截器栈名" />
</interceptor-stack>

</div>

2>配置好了拦截器之后,就可以在元素中使用该拦截器了,使用自定义拦截器时,还必须显示使用系统默认的拦截器defaultStack。

<package ..>
  <!--配置包下所有Action的默认拦截器--》
  <!--如果Action配置了自己的拦截器,那么默认拦截器将不会配置到该Action下-->
  <default-interceptor-ref name="defaultStack" />
  <action ...>
    <!--配置自己的interceptor拦截器-->
    <interceptor-ref name="myInterceptor" />
    <!--因为已经配置了自己的拦截器,所以包默认配置拦截器将不作用,因此需要自己显示配置defaultStack系统默认拦截器-->
    <interceptor-ref name="defaultStack" />
  </action>
</package>
</div>

3>用户自定义拦截器:Struts2提供了Interceptor拦截器原生接口:

public interface Interceptor extends Serializable
{
  //初始化拦截器的回调方法
  void init() ;
  //实现拦截的处理方法
  String intercept(ActionInvocation invocation) throws Exception ;
  //销毁拦截器之前的回调方法
  void destroy() ;
}
</div>

因此,用户自定义拦截器类需要实现该接口并提供该接口中的所有抽象方法的实现。不过Struts2还提供了该接口的一个直接实现类:AbstractInterceptor,该类提供了init()和destroy()方法的实现,我们只需要重写intercept()拦截方法即可:

public class simpleInterceptor extends AbstractInterceptor
{
  private String username ;
  private String password ;
  //omit setter and getter methods
  @Override
  public String intercept(ActionInvocation invocation) throws Exception 
  {
    //获取被拦截的Action实例
    LoginAction action = (LoginAction)invocation.getAction() ;
    System.out.println("开始拦截:" + new Date()) ;
    //取得开始执行Action处理方法的时间
    long start = System.currentTimeMillis() ;
    //回调执行Action被拦截的处理方法
    String result = invocation.invoke() ;
    System.out.println("结束执行:" + new Date()) ;
    //取得执行Action处理方法之后的时间
    Long end = System.currentTimeMillis() ;
    System.out.println("执行用时:" + (end-start) +"ms") ;
    return result ;
  }
}
</div>

上面提供的AbstractInterceptor类定义的拦截器会拦截Action内的所有处理方法,如果只想拦截指定的方法,或者想指定哪些方法拦截,哪些方法不拦截,可以使用Struts2提供的MethodFilterInterceptor类,该类是AbstractInterceptor类的子类,提供了下面三个主要的方法:

1>String doIntercept(ActionInvocation invocation) throws Exception:同intercept()方法作用一样
2>void setIncludeMethods(String includeMethods):设置需要被拦截的方法名
3>void setExcludeMethods(String excludeMethods):设置不需要被拦截的方法名

其中两个setter方法可以在配置该拦截器时通过param元素来指定属性值

<interceptor name="simpleIntercept2" class="com.chengxi.SimpleInterceptor2">
  <param name="includeMethods">login,execute</param>
  <param name="excludeMethods">regiset</param>
</interceptor>
</div>

4>拦截器的执行顺序:如果有多个拦截器同时作用于一个Action上时,遵循:在Action的控制方法执行之前,先定义的拦截器先作用执行;在Action的控制方法执行之后,先定义的拦截器后作用执行;也就是在invocation.invoke()方法这个点进行分界

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • JSP 开发之Struts2内建自定义拦截器

相关文章

  • 2017-05-11jsp自定义标签用法实例详解
  • 2017-05-11在Jsp Servlet中页面重新定向总汇
  • 2017-05-11JDBC连接Access数据库的几种方式介绍
  • 2017-05-11Linux和Windows中tomcat修改内存大小的方法
  • 2017-05-11jsp 文件下载示例代码
  • 2017-05-11如何防止IE缓存jsp文件
  • 2017-05-11jsp内置对象
  • 2017-05-11ssh生成随机数字验证码操作步骤
  • 2017-05-11IE浏览器在post提交时中文乱码的解决方法
  • 2017-05-11JSP 中Hibernate实现映射枚举类型

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Eclipse中自动重构实现探索
    • JSP乱码问题
    • JSP由浅入深(4)—— Scriptlets
    • 运行时实现Java的多态性
    • JSP学习之Java Web中的安全控制实例详解
    • 在jsp中发送email
    • JSP中使用JSTL按不同条件输出内容的方法
    • JSP 自定义标签第1/3页
    • JSP页面跳转方法小结
    • JSP如何获取客户端真实IP地址

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有