采用gradle构建工具创建第一个基于jersey的Rest服务

REST是一种跨平台、跨语言的架构风格,RESTful Web Service是REST风格在Web领域的实现,JAX-RS标准是Java语言对RESTful Web Service的规范,Jersey是JAX-RS的参考实现,也是Java EE参考实现项目GlassFish的子项目;REST架构风格中各种抽象对象被描述为资源,资源的瞬时状态称为representation且可用XML/JSON/Atom等格式表示。RESTful Web Servcie也可以分解为类似MVC的三层结构,即资源、业务和数据访问对象,资源位于最前端用于接收请求和返回响应;JAX-RS2.0中定义的标准方法包括DELETE、GET、HEAD、OPTIONS、POST和PUT。
IDE采用IntelliJ IDEA Community Edition 14.1.2,构建工具采用gradle,创建gradle项目后,目录结构如下
由于本项目需要依赖jersey的相关包,因此作如下的配置,同时定义repositories为oschina镜像,否则无法拦截到mavencentral()。
build.gradle文件内容:
apply plugin: ‘java‘
apply plugin:‘war‘

version = ‘1.0‘

repositories {
    maven {
        url ‘http://maven.oschina.net/content/groups/public/‘
    }
}
dependencies {
    compile group:‘org.glassfish.jersey.containers‘,name:‘jersey-container-grizzly2-http‘,version:‘2.17‘
    compile group:‘org.glassfish.jersey.media‘,name:‘jersey-media-json-jackson‘,version:‘2.17‘
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.11‘
}

实体层:
@XmlRootElement(name="book")
public class Book {
    Integer id;
    String author;
    String bookName;
    String publisher;
    int price;

    public Book(Integer id, String author, String bookName, String publisher, int price) {
        this.id = id;
        this.author = author;
        this.bookName = bookName;
        this.publisher = publisher;
        this.price = price;
    }

    public void setId(Integer id){
        this.id=id;
    }
    @XmlAttribute
    public Integer getId(){
        return id;
    }
    @XmlAttribute
    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
    @XmlAttribute
    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
    @XmlAttribute
    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    @XmlAttribute
    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
}

DAO层:
public class BookDao {
    Map<Integer,Book> books=new HashMap<Integer,Book>();
    private static int nextId=7;
    public BookDao(){

        books.put(1,new Book(1,"张三","C语言程序设计","简单出版社",29));
        books.put(2, new Book(2, "张三", "Java语言程序设计", "信息出版社", 43));
        books.put(3, new Book(3, "李四", "大学物理", "教育出版社", 22));
        books.put(4, new Book(4, "李四", "高等数学", "教育出版社", 43));
        books.put(5, new Book(5, "孔子", "论语", "春秋出版社", 53));
        books.put(6, new Book(6, "福布斯", "大学英语", "未名出版社", 22));
    }
    public Book get(Integer id){
        return books.get(id);
    }
    public boolean update(Book bk){
        if(bk.getId()==null)
        {
            bk.setId(nextId++);
        }
        books.put(bk.getId(),bk);
        return true;
    }
    public boolean delete(Integer id){
        if(books.remove(id)==null)
            return false;
        else
            return true;
    }
    public Map<Integer,Book> getAll(){
        return books;
    }
}
Web Service资源层:
@Path("books")
public class Books {
    private final BookDao bookDao;
    public Books() {
        bookDao = new BookDao();
    }
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public Map<Integer,Book> getAllBooks(){
        return bookDao.getAll();
    }
    @Path("book")
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public Book getBook(@QueryParam("id")final int BookId){
        return bookDao.get(BookId);
    }

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    public Boolean insertBook(final Book bk)
    {
        return bookDao.update(bk);
    }

    @PUT
    @Produces({MediaType.APPLICATION_JSON})
    public Boolean putBook(final Book bk){
        return bookDao.update(bk);
    }
    @DELETE
    @Produces({MediaType.APPLICATION_JSON})
    public Boolean delBook(@QueryParam(("id"))final Integer bookId){
        return bookDao.delete(bookId);
    }
}

运行后,可以通过application.wadl查看提供的REST API及调用方法。另外,REST API可以采用RestClient测试。
在设计资源类时必须注意以下几点:
1、资源类必须是public访问类型
2、资源类的构造函数也是public访问类型
3、项目文件及代码采用UTF-8格式保存,否则容易导致后面调试的乱码问题
4、用到JSON编码,需要加入JackSON依赖包
5、实体类要提供无参构造函数,否则从相应的JSON字符串无法解析出实体类





时间: 2024-11-08 21:38:35

采用gradle构建工具创建第一个基于jersey的Rest服务的相关文章

一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5 双语对照地址: [翻-双语]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 翻译: MrFu 校验: MrFu Android Studio 1.3 的平台已经接近于稳

Android Gradle 构建工具(Android Gradle Build Tools)是什么?

转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5 双语对照地址: [翻-双语]一览新的 Android Gradle 构建工

Android Studio使用新的Gradle构建工具配置NDK环境

从Android Studio 1.3 Beta1开始,就支持了NDK.不过使用的是一个全新的实验性的gradle构建工具.官方地址http://tools.android.com/tech-docs/new-build-system/gradle-experimental,英文好的可以直接看原文. 在进行配置前请先将Android Studio更新至最新版本,目前最新版本是1.4 Bata4 并且使用Android Studio内置的SDK管理器下载NDK. 或者在项目上右键打开Project

采用gradle构建和发布bboss方法介绍

采用gradle构建和发布bboss版本及从maven中央库下载bboss方法介绍 1.概述 bboss是国内最早采用gradle来构建和发布版本的开源框架之一,那么gradle是个什么东东?以下公式可以大概表述一下意思: gradle=ant+maven 尤其是通过gretty插件直接可以在eclipse中调试web应用(改了代码不用重启tomcat或者jetty),真是太棒了. bboss 4.10.8及后续的版本全部采用gradle来打包构建,目前已经采用gradle构建的模块有: 1.b

Gradle 构建工具

参考文章: 作者:ghui 链接:https://www.zhihu.com/question/30432152/answer/48239946 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支持的语言限于Java.Groovy和Scala,计划未来将支持更多的语言. 上面是维基上对Gr

Gradle构建工具简明教程(IDEA篇)

1.Gradle安装 官网下载压缩包,然后解压,配置本地环境变量.主要有下面两个: GRADLE_HOME 是解压后的目录, GRADLE_USER_HOME 的作用是让其他程序检测到本地.gradle文件夹的位置, 再把 %GRADLE_HOME%\bin 追加到 Path 环境变量中. 然后在D:\.gradle目录下新建init.gradle文件,使用记事本打开粘贴下列代码: allprojects{ repositories { def REPOSITORY_URL = 'http://

下载编译volley, 采用gradle构建

我写的CSDN博客客户端 从google下载volley源码 git clone https://android.googlesource.com/platform/frameworks/volley 配置gradle 下载地址: http://gradle.org/downloads 配置环境变量: sudo gedit /etc/profile 添加一行: export PATH=/opt/Java/gradle-2.2.1/bin:$PATH 然后执行命令, 使配置生效: source /

使用Gradle构建工具开发Kotlin Web应用程序

1.安装Gradle 下载地址https://gradle.org/install.笔者使用的Gradle下载地址链接: http://pan.baidu.com/s/1gf9qyC7 密码: u3k6.注意Gradle要求jdk1.7或更高 下载后的zip包如下 将zip包解压,在F盘新建一个Gradle目录(新建目录的位置自定义)用来放置解压后的文件夹,然后将gradle-3.5文件夹复制到F:\Gradle下 配置Gradle环境变量,在系统环境变量path中追加F:\Gradle\gra

基于Jersey的Rest服务记住客户端状态

Jersey可以采用注入的方式,来获取客户端的信息,步骤如下: 1)首先在服务类中注入request,如下: @Context HttpServletRequest request; 2)根据request获取session,来存储或获取信息即可. 存储信息:request.getSession().setAttribute("username", "guest"); 获取信息:request.getSession().getAttribute("user