Jersey构建Restful风格的webservices
最近一直在搞老项目的开发工作,很少写博文了。听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看。
这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料。网上的资料也比较零碎,这里整理一下。
一.helloworld
需要三个包,这里从maven获取。
<dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.18</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.18</version> </dependency> </dependencies>
然后再web.xml中代码:
<servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>hello.resource</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>
写一个资源类:
@Path("hello") public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String greed(){
return "hello world";
} }
这样,访问:http://localhost:8080/rest/hello ,可以看到页面会输出:hello world
二.传递参数
在HelloResource这个类中,新加一个方法:
@GET @Produces(MediaType.TEXT_PLAIN) @Path("{id}") public String sayHello(@PathParam("id")int id){ return "hello jersey "+id; }
此时,访问:http://localhost:8080/rest/hello/123 ,页面会输出:
hello jersey 123
后面的123即是参数id的值。试了一下,如果再写一个一样的方法,把参数类型改成String类型,当输入参数类型不同的时候,会自动识别不同的方法。不过中文不可以直接跟在后面,会有乱码的情况。
我们一般传递参数的话,是采用?符来进行传参的。上面的方式看上去有点奇怪,不符合我们经常用的方式。
这里还有一种方式,适合我们的方式,不采用PathParam这个属性,采用QueryParam这个。
再写一个方法:
@GET @Path("/param") @Produces("text/plain") public String sayHis(@QueryParam("param")String param){ return "nice "+param; }
此时,访问:http://localhost:8080/rest/hello/param?param=work ,页面会输出:
nice work
这些算是一个基本入门,关于客户端使用等相关知识,在之后的博文中再写。
这里有一篇博文写的也不错:
http://my.oschina.net/mlongbo/blog/152548#OSC_h5_14
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。