RestEasy传值方式

一、@pathparam

   @PathParam 是一个参数注解,可以将一个 URL 上的参数映射到方法的参数上,它可以映射到方法参数的类型有基本类型、字符串、或者任何有一个字符串作为构造方法参数的 Java 对象、或者一个有字符串作为参数的静态方法 valueOf 的 Java 对象(一般是从Get的url中获取参数值)。

@GET
@Path("delProByPNumber/{param}")
@Produces("application/json; charset=utf-8")
public Response delPro(<strong>@PathParam("param") String  pNumber</strong>){
   session.delete("production.delete", pNumber);
   session.commit();
   List list=queryAllPro();
   return Response.status(201).entity(list).build();
}

访问路径:http://localhost:8888/Invoice/optPro/delProByPNumber/7

 @pathparem中,URL中只出现参数的值,不出现键值对,比如: “/users/2011/06/30” 

@GET
@Path("{year}/{month}/{day}")
 public Response getUserHistory(
    @PathParam("year") int year,
    @PathParam("month") int month,
    @PathParam("day") int day) {
    String date = year + "/" + month + "/" + day;
 return Response.status(200) .entity("getUserHistory is called, year/month/day : " + date) .build();
 }

另外:{var}代表只能有一个路径名,如:a;而{var:.*}代表可以是任意多个路径名,如:a/b/c

/**
 * {var:.*}代表可以是任意多个路径名,如:a/b/c
 */
@Path("/pathRegular1/{var:.*}/{msg}")
@GET
public String pathRegular1(@PathParam("msg") String m){
   return m;
}

/**
 * {var}代表只能有一个路径名,如:a
*/
@Path("/pathRegular1/{var}/{msg}")
@GET
public String pathRegular2(@PathParam("msg") String m){
   return m;
}

二、@queryParam

@queryParam从/XXX/路径/?num=5中获取参数

@GET
@Path("addAcc/parameters")
@Produces("application/json; charset=utf-8")
public Response addCus(
     @QueryParam("accname") String accname,
     @QueryParam("balance") long balance,
     @QueryParam("department") String   department,
    ) {
     Account account=new Account();
     account.setAccname(accname);
     account.setBalance(balance);
  return Response.status(201).entity(queryOne(accname)).build();
}

访问路径:http://localhost:8888/Invoice/optAcc/addAcc/parameters?accname=rr&balance=99999&department=hedaparameters后面为传入参数

Path("/users")
public class UserService {
  @GET
  @Path("/query")
  public Response getUsers(
  @QueryParam("from") int from,
  @QueryParam("to") int to,
  @QueryParam("orderBy") List<String> orderBy) {
    return Response.status(200).entity("getUsers is called, from : " + from + ", to : " + to  + ", orderBy" + orderBy.toString()).build();
}

URL输入为:users/query?from=100&to=200&orderBy=age&orderBy=name 此时,输出为: getUsers is called, from : 100, to : 200, orderBy[age, name]。

注意:跟@pathparam不同,@queryparam中,指定的是URL中的参数是以键值对的形式出现的,而在程序中 @QueryParam("from") int from则读出URL中from的值

三、@FormParam

将表单中的字段映射到方法调用上,对于此类方式一般提交方式为Post。

例如,对于下面的表单:

<form method="POST" action="/resources/service">
First name:
<input type="text" name="firstname">
<br>
Last name:
<input type="text" name="lastname">
</form>

通过 post 方法提交,处理该请求的方法为:

Path("/")
public class NameRegistry {
    @Path("/resources/service")
    @POST
    public void addName(@FormParam("firstname") String first, @FormParam("lastname") String last) {...}
}

访问路径:http://localhost:8888/resources/services/hello/getName

也可以添加application/x-www-form-urlencoded来反序列化 URL 中的多参数:

@Path("/")
public class NameRegistry {
   @Path("/resources/service")
   @POST
   @Consumes("application/x-www-form-urlencoded")
   public void addName(@FormParam("firstname") String first, MultivaluedMap<String, String> form) {...}
}

参见:http://blog.csdn.net/programmeryu/article/details/50536024

http://ju.outofmemory.cn/entry/144017

http://www.cnphp6.com/archives/29400

时间: 2024-10-27 00:48:47

RestEasy传值方式的相关文章

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式: (一)属性传值 第二个界面中的lable显示第一个界面textField中的文本 首先我们建立一个RootVie

页面之间传值方式的总结,五种方式,通知,block,代理,单例,NSUERDEFALUT,

首先代码拿上 1:单例 2:通知 3:代理 4:block方法 5:NSUSERDEFAULT(沙盒文件) 先是单例类: .h文件 @interface DataSource : NSObject @property (nonatomic, strong) NSString *myName;//单例的属性,用于传值 +(DataSource*)sharedDataSource;//建立单例对象 @end .m文件 #import "DataSource.h" @implementati

MVC&amp;WebForm对照学习:传值方式

刚从webform开发转到mvc,如果说像路由这样稍微复杂一点的知识点还可以暂时先放一放(前提是默认的路由规则基本满足大部分需求),那有个问题在快速开发中,我想是必须要当即解决的,那就是webform中的传值方式是否同样适用于mvc中.那么本文照旧分两部分来阐述.接下来先简单快速地回顾webform中的传值方式. Part 1  WebForm中的传值方式  Form表单传递(get/post)   //aspx<input type="text" id="txtNam

PHP中对象的传值方式

对象的传值方式: 为什么对于对象,值传递和引用传递,这个情况下,他们似乎没有区别??? 这要从对象的数据的存储方式来理解: $o1 = new C1(); //这里创建一个对象o1,其存储结果如图所示: 这里,实际上,变量$o1中,存储的数据只是一个"对象编号#1",这个对象编号,才会去指向对象数据new  C1();  该编号数据,我们不能控制,只是系统内部的分配. 则$o2  =  $o1: 作为值传递,实际复制的是该对象的编号:结果情形是: 在语法上,对对象变量的属性进行操作,其

Spring MVC 传值方式总结

前端传到Controller: 方法1 通过HttpServletRequest .写法如下: @Controller public class MyTestController { @RequestMapping("/print") public String PrintInfo(HttpServletRequest request) { System.out.println("name:" +request.getParameter("name&quo

iOS学习之六种传值方式

iOS页面传值方式 应用于: 两个互动的界面:1)页面一跳转到页面二,页面一的textField的值传给页面二的label.2)A页面跳转到B页面,B页面再跳转回A页面(注册页面跟登录页面) 两个不互动的两个界面:数据持久层跟表示层的数据交互. 几种传值方式: 属性传值  委托delegate方式 通知notification方式 block方式 单例模式方式 UserDefault或者文件方式 1.属性传值(顺传): 需要定义一个公开的属性 需要一个你需要传值的对象 进行属性赋值 实现:A.B

asp,net 传值方式 优缺点比较

.net C#中页面之间传值传参的六种方法 1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了.下面是一个例子: private void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?name=" + Labe

ASP.NET MVC view与controller传值方式

1: ViewData传值方式ViewData的生命周期和View相同, 只对当前View有效.   ViewData["zd"] = dfdfd2:TempData传值方式   可以跨Action传递   TempData的数据至多只能经过一次Controller传递, 并且每个元素至多只能被访问一次,     例如一个用法为,抛出一个异常.跳转到error页面public ActionResult Index3(){      TempData["tempIndex&qu

MVC中页面传值方式总结

MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一.Controller----------->View 1.ViewData 获取或设置一个字典,其中包含在控制器和视图之间传递的数据.使用ViewData是采用键值对的形式,对所定义的数据进行传递.在View中会自动识别到拥有唯一键值的ViewData,并将数据显示出来. 例子: public ActionResult() { <span style="white-space