Strut2的拦截器.docVIP

  • 8
  • 0
  • 约2.35万字
  • 约 21页
  • 2016-12-03 发布于贵州
  • 举报
Strut2的拦截器

Struts2的拦截器 拦截器的初步知识 拦截器在Struts2框架中具有重要的作用,是整个Struts2框架的核心和基础。Struts2中的大多数操作,比如类型转换、国际化、输入效验等,都要用到拦截器。那么拦截器究竟是什么?为什么它的作用会这么大?它是如何工作的?本章我们将会解答这些问题。 什么是拦截器 对于拦截器的概念,官方给出的定义是:拦截器是动态拦截Action调用的对象。它提供了一种机制,使开发者可以定义一段代码,在Action执行之前或者之后被调用执行,也可以在一个Action执行前阻止执行,同时也提供了一种可以提取Action中科重用部分的方式。通俗一点来说,拦截器是一个实现了一定功能的类,它以一种课插拔的方式(所谓可插拔就是指增加和减少某个功能的时候,不会影响到其他功能的实现),被定义在某个Action执行之前或者之后,用来完成特定的功能。 比如在Strts2工程中我们设计了一个Action来实现某个功能,在没有使用拦截器的时候,该Action的执行流程可能如图2-1所示。 图2-1 Action的执行流程 当明天需要为这个Action添加一些功能,比如日志、安全等,我们就可以使用拦截器来实现了。如图4-2所示。 图2-2 添加拦截器 实现日志功能和安全功能的拦截器,以课插拔的方式添加到Action执行过程中以后,整个执行流程就变为:执行日志功能、安全检测功能、执行Action工作、执行安全检测、记录日志功能。 拦截器的设计机制 从根本上来说,拦截器的设计师为了更好地实现代码复用。 对于上面的例子,日志和安全功能在一个工程中可能会用在很多地方。当然我们不用拦截器也能实现添加功能的操作。比如可以在每个需要的Action中都添加日志和安全的代码,或者写好一个实现日志、安全功能的类,让Action来继承这个类。但是这两种方法都不是最好的选择。在每个Action中都加入日志和安全的代码,势必会造成工程的臃肿庞大,使后期维护和修改变得极为困难。继承的方式可以在一定程度上减少代码量,代码的课维护性也相应得到提高,但是灵活性较差。当为Action增加或者减少某个功能的时候,还需要改动很多的代码,而采用拦截器的方式就不存在以上所提及的弊端。我们知道拦截器也是一个类,将需要的功能封装到这个类中,当为Action添加功能的时候就配置该拦截器;当为Action减少功能的时候就取消配置拦截器。通过这种方法,在Action所需要功能发生变化的时候,我们只要修改拦截器的配置就能轻松实现。下面我们就来看看在Struts2中如何使用拦截器。 如何使用拦截器 在Struts2框架中配置和应用拦截器是一件非常简单的事情,只需在struts.xml文件中添加或者删除拦截器的配置信息即可,完全不用担心个别拦截器的改动会破坏其他部分的功能。 Struts2内置拦截器的介绍 对于一些Struts2框架的核心和高级特性,Struts2已经为我们这边了很多内置的拦截器可以使用,我们可以在Struts 2核心包中的struts-default.xml文件中找到它们。Struts2内置拦截器的具体内容,以及它们所实现的功能如表2-1所示。 表2-1 Struts 2内置拦截器及其功能描述 拦截器名称 功能描述 alias 对不同请求中的相同参数进行命名转换 autowiring 框架自动寻找相应的Bean并完成设置工作 chain 构建Action链,当使用result type=”chain”进行配置时,当前Action可使用前一个已经执行结束的Action属性,实现Action链之间的数据传输 checkbox 负责检查checkbox表单控件是否被选中,当checkbox未被选中时提交一个默认的值(通常是false) cookie 把带有特定名/值映射关系的cookie注射到Action中 conversionError 处理类型转换时的错误信息。把ActionContext中的错误信息转换为相应的Action字段的错误信息并保存,需要时可统计视图显示相关错误信息 createSession 自动创建一个HttpSession对象,因为有些拦截器必须要有HttpSession对象才能正常工作(比如TokenInterceptor) debugging 负责调试,当页面中使用s:debug标签时,课后的值栈、上下文等信息 execAndWait 在后台执行Action,并将等待画面传送给用户 exception 提供处理异常功能,将异常映射为结果 fileUpload 负责文件上传 I18n 把指定Locale信息放入Session logger 输出Action名称 sto

文档评论(0)

1亿VIP精品文档

相关文档