介绍Jersey-Jersey入门基础
发布时间:2023-11-18 06:34:26
这里不准备讨论REST的细节内容,但是总体上,REST是让客户端与服务器段的交互通过发送和接收展示资源的方式来进行,在这里有必要说明:
Fielding是http协议和apache web server的核心作者之一。举个例子:
一个http get request可以接收到一个资源
一个http post request可以生成一个资源。
如此描述,对JAVA开发者来讲也许过于底层了,事实上绝大多数的J2EE应用程序,尤其javaserver faces应用程序是不允许REST这样的风格框架的,所以后面我们会仔细比较JavaServer Faces与REST应用之间的区别。JSR311描述了如何在JAVA中实践REST的架构风格。
实现JSR311的框架已经有一些了,比如今天要介绍的Jersey. Jersey目前看是比较成熟,在开发中应用最广泛,而且被oracle提供支持的开源框架。
一,使用 NetBeans JavaServer Faces,来建立一个例子应用程序
这个例子是关于文章投票的系统,一篇文章,需要有文章内容,作者,投票三个实体,实际上就是我们前面说的资源(针对REST)。
需要说明的这里的文章内容,作者,和投票实体在代码层面都是映射成类的哦。
在这个测试应用中,我们仅在三个实体上生成一个CRUD(create,read,update,delete)基础功能,虽然简单,但是基础可用。
但是这样的程序有个比较大的问题:
程序的VIEW层只能使用JavaServer Faces,而REST风格的程序,可以使用多种格式来展示应用资源的状态信息,例如XML,PDF,JavaScript Object Notation (JSON)等。
二,建立基于REST的客户端
NetBeans,可以帮助你自动整个建立过程。
1,右键你的项目,然后进行如下选择 New > RESTful Web Services from Entity Classes
2,选中前面所建立好的但个实体
3,对于转换选择包 fr.responcia.otn.articleevaluator.rest.converter
对于资源选择包fr.responcia.otn.articleevaluator.rest.resource
4,选择Create default REST servlet adaptor in web.xml
NetBeans事实上生成两组类,一组类用来映射实体类到XML文档,通过使用JAXB技术。
另一组是资源,每个资源包括了一类实体的所有实例。以方便客户端的操作和在服务器及客户端进行交换。
我们可以使用REST的接口来对实体进行操作,在resource包中,你可以通过查看类,可以发现URLS和针对每个实体的显示层是如何进行
构建的。
因为在前面我们实现了两个作者的实体实例,所以当你访问如下地址http://localhost:8080/ArticleEvaluator/resources/authors的时候,你
可以看到如下界面:
你会看到两个作者的列表信息(图片省略了),当然你也可以通过如下的地址访问具体的某一个作者:
http://localhost:8080/ArticleEvaluator/resources/authors/1/
测试REST应用
只使用WEB浏览器是不能全面测试REST应用的,因为我们还使用了JSON对象,JSON对象被广泛的应用到REST的应用中。
JSON比纯粹的XML格式更好,可以被JS脚本访问。可以结合jquery使用。
测试REST应用,可以使用两种方法来进行:
1,使用Jsersey提供的测试框架
2,使用底层的库,例如Apache Commons HttpClient ,来手工处理HTTP Request.
通常第一种方法,比较有效率,因为是框架,但是想知道更多的细节则需要使用方法2,你可以到 http://hc.apache.org/httpclient-3.x/ 下载
HttpClient.
测试方法通常包括三个:
createArticle() --生成Article
testResourceAsXml()--测试XML的格式
testResourceAsJson()
比较下 JavaServer Faces and a REST 两中不同类型的客户端:
1,两种客户端都可以使用NetBeans帮助生成。
2,两种前端都使用了实体对象的概念。
3,两种前端可以同时使用,不会有什么冲突。
下面是比较有区别的地方:
1,JSF的应用状态保存在了服务器端,用户的操作状态都保存到了HttpSession 而REST则是把状态保存到了客户端。
使用 REST URLs 来跟资源进行交互,这也是为什么JSF比较容易编码的原因。
2,JSF提供了丰富的用户界面组件,如果你的应用中需要界面,那么使用JSF则比较有效率,后者没有界面组件,只能结合JQUERY等来使用。
3,REST拥有better-looking URLs这样可以被用户进行书签收藏,也方便搜索引擎收录。
4,REST提供了对同一资源进行多格式显示的可能,例如XML,PDF,JDON等。
猜你喜欢
- 概述:Spring Boot 2.0相对于之前的版本,变化还是很大的。首先对jdk的版本要求已经不能低于1.8,其次依赖的spring的版本
- 1. 什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状
- 前言Kotlin一个强大之处就在于它的扩展函数,巧妙的运用这些扩展函数可以让你写出的代码更加优雅,阅读起来更加流畅,下面总结了在开发中经常用
- 一、问题最近在做代码重构,代码工程采用了Controller/Service/Dao分层架构,Dao层使用了Mybatis-Plus框架。在
- 记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题。问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么
- 这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 写在前面从Java 1.0开始,引入java.io包;到Java 1.4再扩展了java.nio包;再到java 1.7又添加了新的流类,使
- 一、BigInteger介绍如果在操作的时候一个整型数据已经超过了整数的最大类型长度 long 的话,则此数据就无法装入,所以,此时要使用
- 本文实例为大家分享了java实现面板之间切换的具体代码,供大家参考,具体内容如下如图:关键技术:事件监听,设置显示面板,重新刷新验证。set
- Demo环境JDK8Maven3.6.3springboot2.4.3redis_version:6.2.1仓库地址https://gite
- 这篇文章主要介绍了Java 使用Calendar类输出指定年份和月份的日历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- using System; using System.Drawing; using System.Collec
- 前言本文介绍在spring mvc中非常重要的注解@ModelAttribute.这个注解可以用在方法参数上,或是方法声明上。这个注解的主要
- 1.类加载<1>.父子类执行的顺序1.父类的静态变量和静态代码块(书写顺序)2.子类的静态变量和静态代码块(书写顺序)3.父类的
- 进行双重foreach循环mapname是一个Map<String,Map<String,Object>> 对象&l
- 前言上一篇文章已经介绍了fluent-mybatis项目的构建,文章地址:Java Fluent Mybatis实战之构建项目与代码生成篇上
- 问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们
- 事务介绍一个事务要么同时成功,要么同时失败特性Atomic原子性 事务是由一个或多个活动组成的一个工作单元。原子性确保事务中的所有操作全部发
- 本文实例为大家分享了java数据库唯一id生成工具类的具体代码,供大家参考,具体内容如下import java.io.File;import
- 1.数据数据(Data)是外部世界信息的载体, 是能够被计算机识别,加工,存储的。在现实生活中也就是我们的产品原材料。计算机中的数据包括数值