最近一直在搞老项目的开发工作,很少写博文了。听了两位阿里巴巴大牛的讨论,决定试试用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

另附glassfish配置方式:

上面是用com.sun的包,还有一种是org.glassfish的包。

配置都差不多。

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.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> </web-app>

目前接触到的区别在于,用glassfish方式,配置后的json,不需要下载,浏览器即可显示出json内容。用sun的话,直接用json格式输出,需要下载打开才可以看到。不知道是不是也需要一些类似的配置。

需要的包:

    <dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.13</version>
</dependency>
<!-- Required only when you are using JAX-RS Client -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.13</version>
</dependency>
</dependencies>
 

最新文章

  1. Data Transformation / Learning with Counts
  2. Linux下JDK安装笔记
  3. 变量声明提升 Vs. 函数声明提升
  4. 深入了解javascript事件流
  5. Oracle数据库入门——如何根据物化视图日志快速刷新物化视图
  6. dedecms创建或修改目录失败
  7. JAVA JDBC连接 SQLServer2012
  8. 夺命雷公狗—angularjs—20—$watch监听的用法
  9. CSS打造三级下拉菜单
  10. PHP中,JS和CSS优化工具Minify的使用方法
  11. 点分治练习: boatherds
  12. java NIO的多路复用及reactor模式【转载】
  13. Two-Phase-Commit for Distributed In-Memory Caches--reference
  14. CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
  15. [LeetCode] Search in Rotated Sorted Array I (33) &amp;&amp; II (81) 解题思路
  16. hadoop调度程序时出现“Error opening job jar”错误
  17. 好用的sitemap生成器—GY SiteMap
  18. java实现单链表的增删功能
  19. 【原创】大数据基础之Mesos(1)简介、安装、使用
  20. CodeForces 958F3 Lightsabers (hard) 启发式合并/分治 多项式 FFT

热门文章

  1. EasyUI 导出页面到Excel中
  2. SUSE11&amp;12 永久关闭防火墙
  3. Python3 range() 函数用法
  4. 33. Search in Rotated Sorted Array旋转数组二分法查询
  5. javascript中Date使用
  6. hadoop应用场景总结
  7. springMVC使用@RequestParam用于处理简单类型的绑定
  8. C#通过反射获得对象所有属性和值
  9. Html使用Iframe无刷新上传文件,后台接收
  10. Legendre多项式