Jersey框架基础总结
2016-04-15 14:27
423 查看
概览
基于restful风格访问中使用的多种注解介绍restful风格后台代码接收前台传递json数据的特殊方式
jersey restful风格相关注解介绍
@QueryParamqueryparam注解用来修饰变量,用来得到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]"));}
相关文章推荐
- 字符串循环右移
- 关于Xcode工程文件后的字母标注的含义
- WEB SERVICE 概念 AND 原理
- 【SSH隧道】端口转发,socket代理
- 滴滴滴...解析服务器报警音含义
- Revit插件开发HelloWorld
- 北邮OJ 980. 16校赛-R_clover's Challenge
- [IMX6DL]超声波模块HC-SR04 Linux驱动源代码
- mysql---总体备份和增量备份
- 在powerdesigner 中出现Could not Initialize JavaVM! 应该怎么解决
- 验证码无法显示:Could not initialize class sun.awt.X1 tomcat
- Gravatar——能让你的留言自动钻出头像的小工具
- js操作referrer获取来源页
- iOS 获取系统图片
- EDUP无线网卡在 Raspberry配置方法 RTL8188CUS芯片
- dos 命令大全
- Xcode: 查看连接的真机中曾经有过的崩溃信息
- 微信移动客户端内部浏览器分享到朋友圈,QQ空间代码
- J2SE(八)Java之对象的序列化与反序列化
- UVa 193 - Graph Coloring