Struts2.1 REST

本文介绍了Struts2.1中新增的REST插件,详细解析了RestActionMapper的工作原理及其如何支持Ruby On Rails风格的URL。通过配置不同的HTTP请求方法,如GET、POST、PUT和DELETE,来映射到Action的不同方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts2.1 REST
2009-07-03 17:15
Struts 2.1增加了REST插件,通过REST插件提供REST支持。REST插件以Convention插件为基础,因此无需使用XML进行配置管理。 Struts 2.1通过REST插件完全可以提供让人和机器客户端共同使用的资源,并支持Ruby On Rails风格的URL。

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文件,看到该文件里包含一个struts-plugin.xml文件,该文件中包含如下一行:
<!-- 定义支持REST的ActionMapper -->
<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper"
name="rest" class="org.apache.struts2.rest.RestActionMapper" />
通过查看RestActionMapper的API说明,我们发现它可接受如下几个参数:
struts.mapper.idParameterName:用于设置ID请求参数的参数名,该属性值默认是id。
struts.mapper.indexMethodName:设置不带id请求参数的GET请求调用Action的哪个方法。该属性值默认是index。
struts.mapper.getMethodName:设置带id请求参数的GET请求调用Action的哪个方法。该属性值默认是show。
struts.mapper.postMethodName:设置不带id请求参数的POST请求调用Action的哪个方法。该属性值默认是create。
struts.mapper.putMethodName:设置带id请求参数的PUT请求调用Action的哪个方法。该属性值默认是update。
struts.mapper.deleteMethodName:设置带id请求参数的DELETE请求调用Action的哪个方法。该属性值默认是destroy。
struts.mapper.editMethodName:设置带id请求参数、且指定操作edit资源的GET请求调用Action的哪个方法。该属性值默认是edit。
struts.mapper.newMethodName:设置不带id请求参数、且指定操作edit资源的GET请求调用Action的哪个方法。该属性值默认是editNew。
提示:在RestActionMapper的方法列表中,我们看到setIdParameterName、setIndexMethodName、 setGetMethodName、setPostMethodName、setPutMethodName、setDeleteMethodName、 setEditMethodName、setNewMethodName等方法,这些方法对应为上面列出的方法提供setter支持。
通常情况下,我们没有必要改变RestActionMapper的参数,直接使用这些参数的默认值就可支持Rails风格的REST。根据前面介绍可以看出:支持REST风格的Action至少包含如下7个方法:
index:处理不带id请求参数的GET请求。
show:处理带id请求参数的GET请求。
create:处理不带id请求参数的POST请求。
update:处理带id请求参数的PUT请求。
destroy:处理带id请求参数的DELETE请求。
edit:处理带id请求参数,且指定操作edit资源的GET请求。
editNew:处理不带id请求参数,且指定操作edit资源的GET请求。
如果请求需要向服务器发送id请求参数,直接将请求参数的值附加在URL中即可。表12.3显示了RestActionMapper对不同HTTP请求的处理结果。
表12.3 RestActionMapper对HTTP请求的处理

HTTP方法 URI 调用Action的方法 请求参数
GET /book index
POST /book create
PUT /book/2 update id=2
DELETE /book/2 destroy id=2
GET /book/2 show id=2
GET /book/2/edit edit id=2
GET /book/new editNew
不幸地是,标准HTML语言目前根本不支持PUT和DELETE两个操作,为了弥补这种不足,REST插件允许开发者提交请求时额外增加一个_method请求参数,该参数值可以为PUT或DELETE,用于模拟HTTP协议的PUT和DELETE操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值