struts.xml配置详解


struts.xml 是 我们 在开 发中 利用 率最 高的 文件 ,也 是 Struts2中 最重 要的 配置 文件 。 分 别介 绍一 下几 个 struts.xml 中 常用 到的 标签 1111、 利用include 标签,可以将一个struts.xml 配置文件分割成多个配置文件,然后在struts.xml 中 使用 标 签引 入其 他配 置文 件。 比如一个网上购物程序,可以把用户配置、商品配置、订单配置分别放在3个配置文件 user.xml、goods.xml 和order.xml 中 ,然 后在 struts.xml 中 将这 3个 配置 文件 引入 : struts.xml: 01 02 05 06 07 08 09 10 user.xml: 01 02 05 06 07 08 09 10 11 12 13 14 15 2222、 在 之前 提到 struts.properties 配 置文 件的 介绍 中 ,我 们曾 经提 到所 有在 struts.properties 文 件中 定义的属性,都可以配置在struts.xml 文件中。而在struts.xml 中,是通过标签来 进 行配 置的 : 01 02 05 06 07 08 09 10 11 12 3333、 1111、 包属性介绍 在Struts2框 架中 是通 过包 来管 理 action、result、interceptor、interceptor-stack 等 配置 信息 的 。 包 属性 如下 : 属性是 否必 需 描述 name 是包 名, 作为 其它 包应 用本 包的 标记 extends 否设 置本 包继 承其 它包 namespace 否设 置包 的命 名空 间 abstact 否设 置为 抽象 包 2222、extends extends extends extends 属 性的详解 • 当 一个 包通 过配 置 extends 属 性继 承了 另一 个包 的时 候 ,该 包将 会继 承父 包中 所有 的 配 置, 包括 action、result、interceptor 等。 • 由 于包 信息 的获 取是 按照 配置 文件 的先 后顺 序进 行的 ,所 以父 包必 须在 子包 之前 被 定 义。 • 通 常我 们配 置struts.xml 的 时候 ,都 继承 一个 名为 “struts-default.xml”的包,这是struts2 中 内置 的包 。 3333、namespace namespace namespace namespace 的 详解 namespace 主要是针对大型项目中Action 的管理,更重要的是解决Action 重名问题,因为 不 在同 一个 命名 空间 的 Action 可 以使 用相 同的 Action 名 的。 1111)如果使用命名空间则 URL URL URL URL 将改变 比 如我 们有 一下 配置 文件 1 2 3/success.jsp 4 5 则 此配 置下 的 Action 的URL 为http://localhost:8080/login.action 假 如为 这个 包指 定了 命名 空间 1 2 3/success.jsp 4 5 则 此配 置下 的 Action 的URL 为http://localhost:8080/user/login.action 2)2)2)2)默认命名空间 Struts2中如果没有为某个包指定命名空间,该包使用默认的命名空间,默认的命名空间总是 ""。 3333)指定根命名空间 当设置了命名空间为“/”,即指定了包的命名空间为根命名空间时,此时所有根路径下的 Action 请 求都 会去 这个 包中 查找 对应 的资 源信 息。 假若前例中路径为http://localhost:8080/login.action 则所有http://localhost:8080/*.action 都会 到 设置 为根 命名 空间 的包 中寻 找资 源。 4444、 1111、属 性介绍 属 性名 称 是 否必 须 功 能描 述 name 是请 求的 Action 名称 class 否Action 处 理类 对应 具体 路径 method 否指定Action 中 的方 法名 converter 否指定Action 使 用的 类型 转换 器 如 果没 有指 定 method 则 默认 执行 Action 中的execute 方 法。 2222、属 性介绍 属 性名 称 是 否必 须 功 能描 述 name 否对应Action 返 回逻 辑视 图名 称, 默认 为 success type 否返 回结 果类 型, 默认 为 dispatcher 3333、 通配符的使用 随着result 的 增加 ,struts.xml 文 件也 会随 之变 得越 来越 复杂 。那 么就 可以 使用 通配 符来 简化 配 置: 例 如下 面这 个案 例: Action 为Test.java 01 public class Test { 02 public String test1(){ 03 return "result1"; 04 } 05 06 public String test2(){ 07 return "result2"; 08 } 09 10 public String test3(){ 11 return "result3"; 12 } 13 } struts.xml 中 配置 为 1 2 3/result{1}.jsp 4 5 4444、 访问 Action Action Action Action 方 法的另一种实现方式 在Struts2中 如果 要访 问 Action 中 的指 定方 法 ,还 可以 通过 改变 URL 请 求来 实现 ,将 原本 的 “Action 名称.action”改为“Action 名称!方 法名 称 .action”在struts.xml 中 就不 需要 指定 方法 名 了。 5555、 这 两个 标签 都是 用来 配置 发生 异常 时对 应的 视图 信息 的 ,只 不过 一个 是Action 范 围的 ,一 个是 包 范围 的 ,当 同一 类型 异常 在两 个范 围都 被配 置时 ,Action 范 围的 优先 级要 高于 包范 围的 优先 级.这 两个 标签 包含 的属 性也 是一 样的 : 属 性名 称 是 否必 须 功 能描 述 name 否用来表示该异常配置 信息 result 是指定发生异常时显示 的视图信息,这里要配 置 为逻 辑视 图 exception 是指 定异 常类 型 两 个标 签的 示例 代码 为 : 01 02 05 06 07 08 09 10 11 12 13 14 15 6666、 当 我们 在配 置 Action 的 时候 ,如 果没 有为 某个 Action 指 定具 体的 class 值时,系 统将 自动 引 用标 签中 所指 定的 类 。在Struts2框 架中 ,系 统默 认 的class 为ActionSupport, 该 配置 我们 可以 在 xwork 的 核心 包下 的 xwork-default.xml 文 件中 找到 。 有 特殊 需要 时, 可以 手动 指定 默认 的 class 1packagewwfy.action; 2 3publicclassDefaultClassRef{ 4publicvoidexecute(){ 5System.out.println("默认class开始执 行……"); 6} 7} 在struts.xml 中 配置 01 02 05 06 07 08 09 10 11/index.jsp 12 13 14 7777、 如 果在 请求 一个 没有 定义 过的 Action 资 源时 ,系 统就 会抛 出 404错 误。 这种 错误 不可 避免 , 但这样的页面并不友好。我们可以使用来指定一个默认的Action,如果 系 统没 有找 到指 定的 Action, 就会 指定 来调 用这 个默 认的 Action。 01 02 05 06 07 08 09 10 11/jsp/actionError.jsp 12 13 14 8888、 该标签用来设置整个包范围内所有Action 所要应用的默认拦截器信息。事实上我们的包继 承了struts-default 包以后,使用的是Struts 的默认设置。我们可以在struts-default.xml 中找 到 相关 配置 : 1 在 实际 开发 过程 中 ,如 果我 们有 特殊 的需 求是 可以 改变 默认 拦截 器配 置的 。当 时一 旦更 改这 个 配置 , “defaultStack”将 不再 被引 用, 需要 手动 最加 。 9999、 通过该标签可以向Struts2框架中注册拦截器或者拦截器栈,一般多用于自定义拦截器或拦 截 器栈 的注 册。 该标 签使 用方 法如 下: 1 2 3 4 5 6 10101010、 通 过该 标签 可以 为其 所在 的 Action 添 加拦 截器 功能 。当 为某 个 Action 单 独添 加拦 截器 功能 后,中 所指 定的 拦截 器将 不再 对这 个 Action 起 作用 。 11111111、 该标签用于设置包范围内的全局结果集。在多个Action 返回相同逻辑视图的情况下,可以 通过标 签统 一配 置这 些物 理视 图所 对应 的逻 辑视 图。 01 02 05 06 07 08 09/index.jsp 10 11 12
还剩7页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

彩色泡沫

贡献于2015-01-09

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf