获取请求的参数,rest技术相对于servlet来说要方便许多。
Servlet我们要获取请求的参数,很麻烦啊。需要request.getParameter(“”)。如果我们要的是int,float这些东西,还需要去转换。虽然说有ognl这样的工具可以帮忙类型转换,自动设置对象值,还是麻烦。
但是rest就非常方便,提供了一种注解的机制来自己将http请求参数类型转换成rest的方法参数。不仅仅是http的请求参数,还支持cookie参数,路径参数等等。
那么我们来见识下申请的rest。
@Cookieparam
@FormParam
@HeaderParam
@MatrixParam
@PathParam
@QueryParam
@BeanParam
总共7个注解。
这里我先介绍下以下三个注解
@MatrixParam
@PathParam
@QueryParam
这三个注解都是从URL里面取东西的。
@MatrixParam取URL分号(;)后面的参数。这个也要注意,一定要在?号前面。
@PathParam取URL路径里的参数。使用的时候需要注意,要在@Path注解内放一个变量,用{}括起来,然后才可以使用。
@QueryParam取URL?后面的请求参数。
那么现在就简单地搭个环境啦
package restparams; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("rest") public class MyApplication extends Application { }
这种配置方式代替了xml的配置方式。指定了所有rest资源类的URL前缀。然后再写资源类。
package restparams; import javax.ws.rs.GET; import javax.ws.rs.MatrixParam; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Path("/max/{a}.html") public class Max { @GET @Produces("text/html") public String max(@PathParam("a") int a, @QueryParam("b") int b, @MatrixParam("c") int c) { int max = a; if (b > max) { max = b; } if (c > max) { max = c; } return "The max number is " + max; } }
在@Path()注解中的{a},可以将这段路径的值放入一个变量a中。比如/max/12.html,a的值就是12。在下面的方法中就使用了@PathParam注解,将这个变量a注入到了int a中。
下面这个URL,c是分号(;)后面的参数,所以是MatrixParam。查询参数就是get请求常用的,在问号(?)后面。
http://localhost:8080/restparams/rest/max/5.html;c=2?b=3
这个URL的访问结果就是这样子的。