• 沒有找到結果。

配置文件

在文檔中 第一部分: (頁 71-74)

return result;

4.4 Interceptor 应用实例

4.4.5 配置文件

整个项目就只有两个配置文件:web.xml,struts.xml。web.xml 与其他项目一样,这边 就不再进行阐述。主要是 struts.xml 文件,下面是这个文件的代码:

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.devMode" value="true" />

<package name="default" extends="struts-default">

<!-- 配置自定义的拦截器 -->

<interceptors>

<interceptor name="greetingin" class="example.GreetingInterceptor"/>

</interceptors>

<default-interceptor-ref name="completeStack"></default-interceptor-ref>

<!-- 配置 greeting Action -->

<action name="greeting" class="example.Greeting">

<result name="success" type="velocity">Greeting.vm</result>

<interceptor-ref name="greetingin"></interceptor-ref>

</action>

<!-- 配置 wait Action -->

<action name="wait" class="example.WaitAction">

<result name="success" type="dispatcher">

这个 struts.xml 与其他工程中是一致的,即对 Action 的返回字符串进行不同页面显示的 配置,此文件中特别之处即粗体显示部分。第一个是自定义拦截器的配置,通过前面自定义 拦截器的例子,已经熟悉了这种方式,第二处就是对于“wait”返回时的页面配置,这只有 在 Action 配置 execAndWait 拦截器才会有这个配置,即第三部分粗体所示的配置就是为 Action 配置 execAndWait 拦截器。

4.4.6 运行

上面所有文件完成之后,把项目部署到 Tomcat 环境下,就可以运行了。在浏览器的地 址中输入:http://localhost:8080/CustomInterceptor/wait.action 就会如图 4-4 所示:

图4-6等待页面 10 秒之后就会进入输入页面,如图 4-5 所示:

图4-7姓名输入页面

输入姓名之后,提交之后,就会出现一个问候页面,上午,下午,晚上三个不同的时间 段提交,出现的问候语句会不同,如图 4-6 所示的是下午提交时的页面:

图4-8下午提交时的问候页面

注意:图 4-4 是在 IE 浏览器中截图的,因为火狐对 javascript 的支持不够完善,非标准 的 W3C 格式的 javascript 脚本都会不正常显示。

4.5 小结

在本章我们学习了什么是拦截器,框架提供的编写拦截器的 API,如何使用框架已经定 义的拦截器,以及如何自定义一个拦截器。在实现拦截器的时候,和 Action 的实现类似,

也可以采取两种策略,一是对于简单的应用,可以采取实现 intercetp 接口来实现;二是对于 较复杂的应用可以使用框架提供的基类来进一步扩展自己的逻辑。

同时讨论了 Struts2 比较重要的一个内容:拦截器。首先我们剖析了 struts2 框架中关于 拦截器的最基础的源代码。通过学习拦截器的原理,分析一些框架为程序员提供的源代码,

了解了拦截器在提高 Web 应用的解耦合,增加代码的复用程度上的优势。读者学习了如何 使用框架的预定义拦截器,以及如何自定义一个符合自己的业务需求相适应的拦截器。在此 基础上给出了应用等待拦截器的一个综合实例,通过这个实例讲解了等待拦截器和自定义拦 截器的共同使用,这个综合的实例将进一步深化读者对于拦截器这一概念的理解。通过本章 的学习,相信读者对框架的原理和结构有了进一步的理解。

第五章 Result

在探讨 Result 之前,要向大家解释清楚很容易弄糊涂的两个概念:返回字符串和返回 类型。在前面 Action 章节,提到返回的字符串有五种,但那不是现在要讨论的 Result 类型,

那只是 Xwork.xml 配置文件中 result 标签 name 属性的值。如下所示:

<result name="success">/welcome.jsp</result>

result 标签还有一个 type 属性,但之前并没有显式使用过该属性,即一直使用该标签的 默认值 Dispatcher。

在本章中将介绍 Result 的几种通用类型,如 Dispatcher、Redirect、Chain 以及一些其他 模块的几种返回类型,将介绍 Velocity、FreeMark、JasperReport 三种模块的返回类型。在介 绍他们之前,先带领读者看看如何自定义 Result,这样会有助于理解 Result 的实质,为以后 的学习打下基础。

在文檔中 第一部分: (頁 71-74)