今天继续学习JAX-RS中的@formparam和@headerparam
1 @formparam
其功能是可以将前端的HTML绑定,先看例子
html>
<body>
<h1>JAX-RS @FormQuery Testing</h1>
<form action="rest/user/add" method="post">
Name : <input type="text" name="name" />
Age : <input type="text" name="age" />
<input type="submit" value="Add User" />
</form>
</body>
</html>
处理:
@Path("/user")
public class UserService {
@POST
@Path("/add")
public Response addUser(
@FormParam("name") String name,
@FormParam("age") int age) {
return Response.status(200)
.entity("addUser is called, name : " + name + ", age : " + age)
.build();
}
对于前端的HTML浏览,比如:
http://localhost:8080/RESTfulExample/UserForm.html
会出现普通的HTML表单,当提交按钮时,会转到
http://localhost:8080/RESTfulExample/rest/user/add
这个URL,这样,REST就去匹配addUser方法了,所以就会把表单中提交的数据输出。
2 在JAX-RS中,有两种方法能取得HTTP REQUEST头,
1)@headparam
@Path("/users")
public class UserService {
@GET
@Path("/get")
public Response addUser(@HeaderParam("user-agent") String userAgent) {
return Response.status(200)
.entity("addUser is called, userAgent : " + userAgent)
.build();
}
当访问URL:
/users/get
会输出HTTP 头信息,即:
addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
另外的方法是,
@Path("/users")
public class UserService {
@GET
@Path("/get")
public Response addUser(@Context HttpHeaders headers) {
String userAgent = headers.getRequestHeader("user-agent").get(0);
return Response.status(200)
.entity("addUser is called, userAgent : " + userAgent)
.build();
}
也可以同样达到目的