@FormParam @PathParam @QueryParam @HeaderParam @CookieParam @MatrixParam 作为Restfull框架的基本应用,以上注解可以让我们定义具体的请求方式
要用以上注解必须引入maven依赖
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
<type>bundle</type>
</dependency>
1.@FormParam
该注解定义在请求参数上,表示让前端页面进行表单提交
<form method="post" id="savingsCard" url="http://www.71bibll.com/addcard">
<input id="bankName" name="bankName" readonly="readonly" type = "text" placeholder="所属银行名称">
<input id="cardNo" name="cardNo" type="tel" οninput="changes()" placeholder="请输入储蓄卡卡号">
</form>
@POST
@Path("addcard")
public String addCard(@FormParam("bankName") String n, @FormParam("cardNo") String c) {
return "addcard with " + n + " " + c;
}
另外一种方式:
public class Person {
@FormParam("bankName")
private String bankName;
@FormParam("cardNo")
private String cardNo;
//getters and setters
//toString
}
@POST
@Path("/addPersonModel")
public String addPersonModel(@Form Person person) {
String message = "addPersonModel is called.";
return message + " " + person.toString();
}
2.@PathParam
@Pathparam标注绑定一个路径段资源的方法参数的值。简单的说把参数拼接在路径里
var url="http://www.71bibll.com/addcard/平安银行/6230580000003620767"
@GET
@Path("addcard")
public String addCard(@PathParam("bankName") String n, @PathParam("cardNo") String c) {
return "addcard with " + n + " " + c;
}
3.@QueryParam
@QueryParam同样是标注绑定一个路径段资源的方法参数的值,和@pathParam不同的是,它不是url中的一个层级,而是用
?key=value的形式拼在url里
var url="http://www.71bibll.com/addcard?bankName=平安银行&cardNo=6230580000003620767"
@GET
@Path("addcard")
public String addCard(@QueryParam("bankName") String n, @QueryParam("cardNo") String c) {
return "addcard with " + n + " " + c;
}
4.@HeaderParam
@HeaderParam 标注提取HTTP表头( HTTP header)并将它绑定到一个方法的参数。
$.ajax({
type: "GET",
url: "www.bibll.com/addcard",
beforeSend: function(request) {
request.setRequestHeader("source", "bibll");
},
success: function(result) {
alert(result);
}
})
@GET
public String callService(@HeaderParam("source") String source) {
return "来源"+ source
}
5.@CookieParam
@cookieParam业务场景比如说session管理,一般是通过cookie进行管理的。
@GET
@Path(“/cookie”)
public String cookie(@CookieParam(“sid”) String sid){
return sid;
}
6.@MatrixParam
@MatrixParam的做法和@QueryParam有些相似,这个主要是做分离参数用的
var url="http://www.71bibll.com/addcard;bankName=平安银行;cardNo=6230580000003620767"
@GET
@Path("addcard")
public String addCard(@MatrixParam("bankName") String n, @MatrixParam("cardNo") String c) {
return "addcard with " + n + " " + c;
}
7 @BeanParam
将其他的xxxParam封装到一个Bean当中,并把这Bean作为参数注入。可以重复使用参数定义也可以做一些Bean验证的操作。
public class MyBean {
@FormParam("myData")
private String data;
@HeaderParam("myHeader")
private String header;
@PathParam("id")
public void setResourceId(String id) {...}
...
}
@POST
@Path("{id}")
public void post(@BeanParam MyBean myBean) {...}
8 @Encoded 强制不解码
该注解标明此参数不需要自动解码,直接使用编码后的请求值。
@GET String getInfo(@Encoded @QueryParam("size") int size){...}