jersey + tomcat 实现restful风格

本文参考 http://www.cnblogs.com/bluesfeng/archive/2010/10/28/1863816.html



环境:

idea 15.0.2

jersey 1.3

tomcat 7.0

maven 3.3.3

1.idea 基于maven 构建webapp 略过

2.项目构建完成之后pom.xml 文件加入项目所需包:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>asm</groupId>
            <artifactId>asm</artifactId>
            <version>3.2</version>
        </dependency>

3.创建pojo类 Student:

@XmlRootElement
public class Student {
    private int id;
    private String name;
    private String dept;

    public int getId() {
        return id;
    }

    public Student() {
    }

    public Student(int id, String name, String dept) {
        super();
        this.id = id;
        this.name = name;
        this.dept = dept;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }

}

同时创建资源类:

@Path("/students")
public class RestWsDemo {
    private static Logger logger = Logger.getLogger(RestWsDemo.class);
    private static int index = 1;
    private static Map<Integer,Student> studentList = new HashMap<Integer, Student>();

    public RestWsDemo() {
        if(studentList.size()==0) {
            studentList.put(index, new Student(index++, "Frank",  "CS"));
            studentList.put(index, new Student(index++, "Jersey", "Math"));
        }
    }

    @GET
    @Path("{studentid}")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Student getMetadata(@PathParam("studentid") int studentid) {
        if(studentList.containsKey(studentid))
            return studentList.get(studentid);
        else
            return new Student(0, "Nil", "Nil");
    }

    @GET
    @Path("list")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Student> getAllStudents() {
        List<Student> students = new ArrayList<Student>();
        students.addAll(studentList.values());
        return students;
    }

    @POST
    @Path("add")
    @Produces("text/plain")
    public String addStudent(@FormParam("name") String name,
                             @FormParam("dept") String dept) {
        studentList.put(index, new Student(index++, name, dept));
        return String.valueOf(index-1);
    }

    @DELETE
    @Path("delete/{studentid}")
    @Produces("text/plain")
    public String removeStudent(@PathParam("studentid") int studentid) {
        logger.info("Receieving quest for deleting student: " + studentid);

        Student removed = studentList.remove(studentid);
        if(removed==null) return "failed!";
        else   return "true";
    }

    @PUT
    @Path("put")
    @Produces("text/plain")
    public String putStudent(@QueryParam("studentid") int studentid,
                             @QueryParam("name") String name,
                             @QueryParam("dept") String dept
    ) {
        logger.info("Receieving quest for putting student: " + studentid);
        if(!studentList.containsKey(studentid))
            return "failed!";
        else
            studentList.put(studentid, new Student(studentid, name, dept));

        return String.valueOf(studentid);
    }
}

创建完之后项目结构如图:

4.再web.xml 配置如下:

<servlet>
        <servlet-name>jerseyws</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

        <init-param>
            <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
            <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
        </init-param>

        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>cz.service</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jerseyws</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

其中 com.sun.jersey.config.property.packages 的属性值是你资源所在的包的路径

5.maven install 略过

6.启动tomcat 访问路径 http://localhost:8081/rest/students/list 就看以看到如下结果:

7.其他资源获取方式自行领悟、测试

第一篇处女博文,觉得不好请将就下看这,如果该博文侵犯 原作者版权请尽快联系我

时间: 2024-11-04 16:18:56

jersey + tomcat 实现restful风格的相关文章

在 Docker 上运行一个 RESTful 风格的微服务

tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/docker-restful-demo 实现构思 1. 使用 Maven 进行项目构建 2. 使用 Jersey 实现一个 RESTful 风格的微服务 3. 在 Docker 里面执行 mvn package 对项目打包 4. 在 Docker 容器里运行这个微服务 实现一个微服务 场景 & 需求

Jersey构建Restful风格的webservices

最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料.网上的资料也比较零碎,这里整理一下. 一.helloworld 需要三个包,这里从maven获取. <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>j

基于jersey和Apache Tomcat构建Restful Web服务(一)

基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来越多网站的采用.那么问题来了,它是什么呢? 起源 REST(Representational state transfer)在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources

在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用

在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用 RESTful Web 服务简介 REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识.客户端应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集.RESTful Web 服务是使用 H

基于jersey和Apache Tomcat构建Restful Web服务(二)

基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西,当然也是很简单了,仅仅是在路径中包含参数而已了.接下来开始动手实践吧. 在路径中包含参数 接下来就在上次的基础上进行改动即可,或者是再添加一个方法,随意了,这个方法主要就是在路径中加入输入的参数,并且根据参数的不同,它的返回值也不同,返回值为“Hello”+你输入的参数.这里用到了“PathPar

Jersey构建Restful风格的Webserivces(三)

一.总体说明 通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增.删.改.查等操作. 服务端主要是通过内存的方式,来模拟用户的增加.删除.修改.查询等操作. 二.创建服务端 1.在上文项目中, 在“com.waylau.rest.resources.UserResource“中修改代码, 首先创建一个HashMap,用来保存添加的用户 [java] view plaincopyprint? private static Map<String,U

lucene构建restful风格的简单搜索引擎服务

来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客现在也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,目录结构: 二,配置文件: 总共有四个配置文件:bonecp-config.xml,IKAnalyzer.cfg.xml,log4j.properties,system-config.xml 1.bonecp-config.xml是配置jdbc连接池用的,不用这个配置也行,bonecp包有默认配置 2.IKAnalyzer.cfg

搭建一个RESTFUL风格的Web Service (Maven版本)

[该教程翻译自Spring官方,并进行适当删减.] 你将搭建的 你将搭建一个可以接受Http Get 请求的web service, http://localhost:8080/greeting 并将以JSON字符串的形式返回问候, {"id":1,"content":"Hello, World!"} 工具 一个文本编辑器,JDK1.6及以上,Maven 3.0+或者Gradle 1.11+.(本文将使用Maven) 下面是pom.xml文件的清

构造Restful风格的SpringMVC

pringmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL. rest介绍 , 这里还有struts2 rest构造的一篇文章: 使用 Struts 2 开发 RESTful 服务 简单例子如下,比如如下URL Java代码  /blog/1  HTTP GET =>    得到id = 1的blog /blog/1  HTTP DELETE => 删除 id = 1的blog /blog/1  HTTP PUT  =>   更新id = 1的bl