struts2与rest

grasszring 2010-05-07 01:03:46
struts2.1以上的struts2提供的插件可以使用rest风格的url。
在官方项目中也提供了demo。
http://localhost:8080/test/books/2
知道rest的朋友应该知道2会自动封装到action的id属性中。
这就如同:http://localhost:8080/test/books.action?id=2,这是传统的写法,问号传参。
但是我们在有些情况下面我们并不只传入一个参数。
如:http://localhost:8080/test/books.action?id=2&name=grass
这个时候我们有两个参数,我们用rest的url怎么传入到action中(需要写法)。

注:是url的方式,并非存在from。
...全文
376 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
woyesyes 2011-07-26
  • 打赏
  • 举报
回复
我来告诉你吧 呵呵
@GET以GET方式请求
@Path("delSingleUser/{id}/{name}")//传2个参数一个是id一个是name
@Produces({"application/json"})
public JSONObject getAllUser(@PathParam(value = "id") String id,@PathParam(value = "name") String name) throws SQLException, JSONException {
JSONObject obj = new JSONObject();
String c = service.deleteUser(id);
obj.put("result", c);
return obj;
}
请求地址例子http://localhost:8080/test/books/2/grass 就OK
  • 打赏
  • 举报
回复
举个例子吧,比如有一个学生信息的 REST 服务。其 URL 定义如下:

http://localhost:8080/student/rest/students
http://localhost:8080/student/rest/students/{id}

向 http://localhost:8080/student/rest/students 发出 GET 请求,表示查询所有的学生,服务端会返回:

<students>
<student id="1">
<link rel="self" href="http://localhost:8080/student/rest/students/1" />
<name>Tom</name>
</student>
<student id="2">
<link rel="self" href="http://localhost:8080/student/rest/students/2" />
<name>Mike</name>
</student>
...
</students>


向 http://localhost:8080/student/rest/students/{id} 发出 GET 请示,{id} 置为 2,这样表示查询 2 号学生的信息,服务端会返回 id 为 2 的学生信息。

向 http://localhost:8080/student/rest/students/{id} 发出 DELETE 请示,{id} 置为 2,这样表示删除 2 号学生的数据,服务端会返回被删除 2 号学生的信息。
  • 打赏
  • 举报
回复
先需要明确一个概念。REST 服务的 URI 与动态页面的 UrlRewrite 是不同的概念。

REST 是资源服务,一般采用 XML 作为数据表述进行数据传送。REST 的各种请求处理的结果,服务端处理回传的数据表述并一定不是 HTML 的。

REST 把服务信息都抽象为资源,使用 HTTP 的 GET、POST、PUT、DELETE 四种请求以完成资源查询、修改、新增和删除。
sunny936 2010-05-08
  • 打赏
  • 举报
回复
以下写法不知道能否帮助LZ
1. 用隐藏表单 <input type="hidden" name="名字" value="值"/>
ACTION中 request.getpamter(“变量名”)

2. http://localhost:8080/test/books.action?id=2&name=grass
ACTION中 request.getpamter(“id”);
guruo 2010-05-08
  • 打赏
  • 举报
回复
您只能输入 10000 个字符
CS_frank 2010-05-08
  • 打赏
  • 举报
回复
顶!!!!!!!
grasszring 2010-05-08
  • 打赏
  • 举报
回复
哎,哎。
聪明反被聪明误呀。
浏览器输入的url地址,为什么我们不能继续在后面使用问号来传参呢。
呵呵。
redlotus_lyn 2010-05-07
  • 打赏
  • 举报
回复
在Action中

private String id;

private String name;

两个属性都有get/set

接受不到吗
lan12107 2010-05-07
  • 打赏
  • 举报
回复
这个没弄过,帮你顶下..
ladybirds2008 2010-05-07
  • 打赏
  • 举报
回复
rest 不知道。。。。。只好帮你顶着了。。。。。
grasszring 2010-05-07
  • 打赏
  • 举报
回复
谁有李刚出的<struts2.1权威指南>的光盘,我只需要与rest整合部分。
邮箱:grasszring@gmail.com
qq:501276913
谢谢。
grasszring 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 colin_pxx 的回复:]

一样的写法吧
<s:hidden name="url"></s:hidden>这样可以不
[/Quote]

麻烦在回答人家题目的时候看清楚,我说过不存在form,只是单纯的链接传值。
colin_pxx 2010-05-07
  • 打赏
  • 举报
回复
一样的写法吧
<s:hidden name="url"></s:hidden>这样可以不
injuer 2010-05-07
  • 打赏
  • 举报
回复
http://localhost:8080/test/books/2/3/4/5
redlotus_lyn 2010-05-07
  • 打赏
  • 举报
回复
是Bug,暂时只支持id参数传递。
grasszring 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 redlotus_lyn 的回复:]
在Action中

private String id;

private String name;

两个属性都有get/set

接受不到吗
[/Quote]

内置会自动封装id,并没有name.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧