本文共 1671 字,大约阅读时间需要 5 分钟。
今天继续学习JAX-RS中的@formparam和@headerparam。
@formparam是一种在JAX-RS中强大的绑定机制,允许前端HTML表单数据直接传递给后端服务。通过@formparam,可以轻松将HTML表单字段映射到Java方法参数中。
考虑以下HTML表单:
JAX-RS @FormQuery Testing
当表单提交时,数据会发送到rest/user/add endpoint。服务端可以通过@formparam注解来接收表单数据。
@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(); }} 除了@formparam,JAX-RS还提供了@headerparam用来获取HTTP请求头信息。通过@headerparam,可以直接从HTTP请求头中获取特定头字段的值。
@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(); }} 当访问/users/get endpoint时,会返回包含用户代理信息的响应。
另一种获取HTTP头信息的方法是使用@Context注解获取HttpHeaders对象,然后手动获取所需头字段。
@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(); }} http://localhost:8080/RESTfulExample/UserForm.html会看到一个标准的HTML表单。-提交表单后,数据会发送到http://localhost:8080/RESTfulExample/rest/user/add endpoint。通过以上方法,可以轻松地在JAX-RS服务中处理HTML表单数据和HTTP请求头信息。
转载地址:http://aacf.baihongyu.com/