admin 管理员组文章数量: 887021
2023年12月23日发(作者:火狐浏览器下载app)
从 Struts 2.1 开始,Struts 2 改为使用 Convention 插件来支持零配置。Convention
插件彻底地抛弃了配置信息,不仅不需要使用 文件进行配置,甚至不需要使用 Annotation 进行配置。而是由 Struts 2 根据约定来自动配置。Convention 这个单词的翻译过来就是“约定”的意思。有 Ruby On Rails 开发经验的读者知道 Rails 有一条重要原则:约定优于配置。Rails 开发者只需要按约定开发 ActiveRecord、ActiveController 即可,无需进行配置。很明显,Struts 2 的 Convention 插件借鉴了
Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。
由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本开发方法之后,如果希望改为使用 Convention 插件也非常容易,我们只要放弃 Stuts 2.1 应用原有的配置文件,改为按 Convention 插件的约定来定义
Action 即可。以 Convention 插件为基础,Struts 2.1 又新增了 REST 插件,允许
Struts 2 应用对外提供 REST 服务。REST 插件也无需使用 XML 进行配置管理。Struts
2.1 通过 REST 插件完全可以提供让人和机器客户端共同使用的资源,并支持 Ruby On
Rails 风格的 URL。
约定优于配置
Convention 这个单词的翻译过来就是“约定”的意思。有 Ruby On Rails 开发经验的读者知道 Rails 有一条重要原则:约定优于配置。Rails 开发者只需要按约定开发
ActiveRecord、ActiveController 即可,无需进行配置。很明显,Struts 2 的
Convention 插件借鉴了 Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。
RestActionMapper 简介
从本质上来看,Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按
REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST 框架。由于 Struts 2 提供了良好的可扩展性,因此允许通过 REST 插件将其扩展成支持 REST 的框架。REST 插件的核心是 RestActionMapper,它负责将 Rails 风格的 URL 转换为传统请求的 URL。
用 WinRAR 打开 struts2-rest-plugin-2.1.6 文件,看到该文件里包含一个
文件,该文件中包含如下一行:
name="rest" class="tionMapper" /> 通过查看 RestActionMapper 的 API 说明,我们发现它可接受如下几个参数: 1. meterName:用于设置 ID 请求参数的参数名,该属性值默认是 id。 ethodName:设置不带 id 请求参数的 GET 请求调用 Action 的哪个方法。该属性值默认是 index。 hodName:设置带 id 请求参数的 GET 请求调用 Action 的哪个方法。该属性值默认是 show。 thodName:设置不带 id 请求参数的 POST 请求调用 Action 的哪个方法。该属性值默认是 create。 hodName:设置带 id 请求参数的 PUT 请求调用 Action 的哪个方法。该属性值默认是 update。 MethodName:设置带 id 请求参数的 DELETE 请求调用 Action 的哪个方法。该属性值默认是 destroy。 thodName:设置带 id 请求参数、且指定操作 edit 资源的 GET 请求调用 Action 的哪个方法。该属性值默认是 edit。 hodName:设置不带 id 请求参数、且指定操作 edit 资源的 GET 请求调用 Action 的哪个方法。该属性值默认是 editNew。 在 RestActionMapper 的方法列表中,我们看到 setIdParameterName、setIndexMethodName、setGetMethodName、 setPostMethodName、setPutMethodName、setDeleteMethodName、 setEditMethodName、setNewMethodName 等方法,这些方法对应为上面列出的方法提供 setter 支持。 通常情况下,我们没有必要改变 RestActionMapper 的参数,直接使用这些参数的默认值就可支持 Rails 风格的 REST。根据前面介绍可以看出:支持 REST 风格的 Action 至少包含如下 7 个方法: 1. index:处理不带 id 请求参数的 GET 请求。 :处理带 id 请求参数的 GET 请求。 :处理不带 id 请求参数的 POST 请求。 :处理带 id 请求参数的 PUT 请求。 y:处理带 id 请求参数的 DELETE 请求。 :处理带 id 请求参数,且指定操作 edit 资源的 GET 请求。 w:处理不带 id 请求参数,且指定操作 edit 资源的 GET 请求。 如果请求需要向服务器发送 id 请求参数,直接将请求参数的值附加在 URL 中即可。表 1 显示了 RestActionMapper 对不同 HTTP 请求的处理结果。 表 1. RestActionMapper 对 HTTP 请求的处理 HTTP 方法 URI GET POST PUT GET /book /book /book/2 /book/2 调用 Action 的方法 请求参数 index create update destroy show id=2 id=2 id=2 DELETE /book/2 GET GET /book/2/edit edit /book/new editNew id=2 不幸地是,标准 HTML 语言目前根本不支持 PUT 和 DELETE 两个操作,为了弥补这种不足,REST 插件允许开发者提交请求时额外增加一个 _method 请求参数,该参数值可以为 PUT 或 DELETE,用于模拟 HTTP 协议的 PUT 和 DELETE 操作。
版权声明:本文标题:Struts 2 的 REST使用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703304280h446178.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论