您的位置:首页 > 其它

Jersey框架基础总结

2016-04-15 14:27 423 查看

概览

基于restful风格访问中使用的多种注解介绍

restful风格后台代码接收前台传递json数据的特殊方式

jersey restful风格相关注解介绍

@QueryParam

queryparam注解用来修饰变量,用来得到GET方式传递的参数,QueryParam注解的具体使用方法如下:

@QueryParam("limit") @DefaultValue("10") Integer limit,
@QueryParam("curpage") @DefaultValue("1") Integer curpage,


(@DefaultValue注解这里就不再多介绍,意思就是当url未携带参数,queryparam未取到值,则将这个queryparam注解标记的变量赋值为defaultvalue设定的值)
queryparam注解用来标注变量,而且只有当访问方式为GET,才能去得到访问路径以xxxx?xx=?&xx=?的值。

@FormParam

formparam注解的功能就跟其含义一样,得到从表单传递过来的值,其具体使用方式如下:

(@FormParam("name")String name,@FormParam("password")String password)


@Consumes

consumes注解用来修饰方法,如果是以@GET方式标记的方法,则不需要使用@Consumes注解去标记这个方法了,但是当一个方法以@POST方式标记的方法,则必须使用@Consumes方式去标记这个方法。

consumes注解用来表示这个post方式标记的方法将接受何种类型的数据。

application/json

application/x-www-form-urlencoded

text/plain

….

分别表示接收json 格式参数,form提交参数,以及普通的string类型参数等。还有其他更多的接收参数类型。

还可以在consumes注解中添加多个接收参数类型。

@Consumes({MediaType.APPLICATION_JSON})

@Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON})

@Produces

produces注解用来修饰方法,produces注解表示执行方法将返回何种类型的数据,可以是xml类型,也可以是json类型,同consumes注解一样,需要指定需要输出的类型后去标记方法,同样也可以执行返回多个类型。

@Produces({MediaType.APPLICATION_JSON})

@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

@Context

context注解用来修饰变量,但是修饰的这个变量不一般,context用来修饰的是servlet api,比如HttpServletRequest,HttpServletReponse,HttpHeader等。修饰的形参将会被框架注入这些servlet api。具体使用方式如下:

public JSONObject getExpertByQueryString(

@QueryParam(“limit”) @DefaultValue(“10”) Integer limit,

@QueryParam(“curpage”) @DefaultValue(“1”) Integer curpage,

@QueryParam(“query_string”) String queryString,

@Context HttpHeaders headers, @Context HttpServletResponse response)

这样就可以得到servlert api,可以设置跨域访问以及getparamter之类的了,getparamter最好用queryparam注解标注的变量去获取。

@Path

path注解用来修饰方法,path注解用来指定访问这个方法的路径,就跟springmvc的requestmapping注解使用方法是一样

@Path(“findbyquerystr”)

@Path(“findbycondition/{condition}”)//rest风格

@PathParam

pathparam用来修饰变量,pathparam用来获取restful风格url 占位符的值。

@PathParam(“condition”) String condition,

特殊方式接收前台传递的json数据

MutiValuedMap类。

如果前台使用post方式传递json参数,用MutiValuedMap的实例作为接收参数是不错的选择,MutiValuedMap作为Map的子类,当MutiValuedMap实例接受到json传递的值时,实例所有的key为json的key,value为json的所有key对应的value。

但是json传值的时候会在样式上有一些区别

{

type:’xx’,

name:’xx’,

password:’xx’

}

如果以上述这种方式传递json,那通过键值形式获取值得方式为

valueParams.getFirst(“name”); (valueParams为MutiValuedMap类实例)

{

type:’xx’,

info:{

name:’xxx’,

password:’xxx’

}

}

如果是以这种方式传递json,那通过键值形式获取值得方式为

valueParams.getFirst(“info[name]”);

public JSONObject addExperts(MultivaluedMap<String, String> valueParams,@Context HttpHeaders headers, @Context HttpServletResponse response
) throws IOException {
tableRow.setColumn("ename", valueParams.getFirst("info[ename]"));}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: