介绍Jersey-Jersey入门基础

这里不准备讨论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等。

(0)

相关推荐

  • java结合HADOOP集群文件上传下载

    对HDFS上的文件进行上传和下载是对集群的基本操作,在<HADOOP权威指南>一书中,对文件的上传和下载都有代码的实例,但是对如何配置HADOOP客户端却是没有讲得很清楚,经过长时间的搜索和调试,总结了一下,如何配置使用集群的方法,以及自己测试可用的对集群上的文件进行操作的程序.首先,需要配置对应的环境变量: 复制代码 代码如下: hadoop_HOME="/home/work/tools/java/hadoop-client/hadoop" for f in $hadoo

  • java实现文件上传下载和图片压缩代码示例

    分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:) 复制代码 代码如下: package com.eabax.plugin.yundada.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.

  • java使用smartupload组件实现文件上传的方法

    本文实例讲述了java使用smartupload组件实现文件上传的方法.分享给大家供大家参考.具体分析如下: 文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,这里主要说明smartupload组件上传. 在讲解smartupload上传前,我们先来看看不使用组件是怎么完成上传的原理的? 废话不多说直接上代码: 复制代码 代码如下: import java.io.*; import java.util.*; import javax.servle

  • JavaWeb实现文件上传下载功能实例解析

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

  • java中struts2实现文件上传下载功能实例解析

    本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签 复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

  • JavaBean实现多文件上传的两种方法

    摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较. 关键字:JavaBean .http .ftp .ftpclient JavaBean是一种基于Java的软件组件.JSP对于在Web 应用中集成JavaBean组件提供了完善的支持.这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的

  • 基于Java中两种jersey文件上传方式

    本文将带领大家使用基于JAX-RS REST风格的实现Jersey来上传文件到服务器制定的文件夹,如果是图片并读取显示出该图片. 准备工作:准备一个form表单,有两个字段,一个是type="file"和type="text",并且表单需要使用POST方式提交.注意改表单需要使用multipart/form-data.该项目使用netbeans8.0和glassfish4.0开发和运行.并且使用maven管理该工程:需要在您的C盘建立一个文件夹,用来存储上传的文件.

  • Java中使用内存映射实现大文件上传实例

    在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验. 复制代码 代码如下: package test; import java.io.BufferedInputStream;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import

  • JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运算符(+,-,*,/,++,--,%).比较运算符(>,<,<=,>=,==,===,!=,!==).逻辑运算符(||,&&,!).条件运算(?:).位移运算符(|,&,<<,>>,~,^)和字符串运算符(+). 可能很多人不知道&quo

  • python入门基础之用户输入与模块初认识

    一.注释 当前行注释:# 被注释内容 多行注释:""" 被注释内容 """ 二.用户输入 #!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello "

  • 介绍Jersey-Jersey入门基础

    这里不准备讨论REST的细节内容,但是总体上,REST是让客户端与服务器段的交互通过发送和接收展示资源的方式来进行,在这里有必要说明: Fielding是http协议和apache web server的核心作者之一.举个例子: 一个http get request可以接收到一个资源 一个http post request可以生成一个资源. 如此描述,对JAVA开发者来讲也许过于底层了,事实上绝大多数的J2EE 应用程序,尤其javaserver faces应用程序是不允许REST这样的风格框架

  • C# 语言入门基础介绍

    目录 一..NET 体系结构 二.Hello world 三.类型和变量 四.程序结构 前言: C#(读作"See Sharp")是一种新式编程语言,不仅面向对象,还类型安全. 开发人员利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序. C# 源于 C 语言系列,C.C++.Java 和 JavaScript 程序员很快就可以上手使用. 本教程概述了 C# 8 及更高版本中该语言的主要组件. C# 是面向对象的.面向组件的编程语言. C# 提供了语言构造来直接支持这些概

  •  typeScript入门基础介绍

    目录 一.安装 TS 二.Vscode 自动编译 ts 三.入门 TS 基础数据类型 接口 类 TS 的特点: 始于 javaScript 归于 javaScript . 强大的类型系统. 先进的 javaScript . 适合开发大型项目,编译成纯 js 代码,js 可以运行在任何浏览器上. typeScript 是区分大小写的一门语言,本篇文章主要带你了解 ts 的安装,环境配置,以及简单的入门. 一.安装 TS 使用之前需要安装: npm install -g typescript 安装完

  • Kubernetes(K8S)入门基础内容介绍

    Introduction basic of kubernetes 我们要学习 Kubernetes,就有首先了解 Kubernetes 的技术范围.基础理论知识库等,要学习 Kubernetes,肯定要有入门过程,在这个过程中,学习要从易到难,先从基础学习. 那么 Kubernetes 的入门基础内容(表示学习一门技术前先了解这门技术)包括哪些? 根据 Linux 开源基金会的认证考试,可以确认要了解 Kubernetes ,需要达成以下学习目标: Discuss Kubernetes. Lea

  • Oracle PL/SQL语言入门基础

    正在看的ORACLE教程是:Oracle PL/SQL语言入门基础.PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件.以及如何设计并执行一个PL/SQL程序. PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL

  • Vue 2.0入门基础知识之内部指令详解

    1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一个非常轻量级的工具,与其说是一个MVVM框架,不如说是一个js库.Vue.js具有响应式编程和组件化的特点.响应式编程,即保持状态和视图的同步,状态也可以说是数据吧:而其组件化的理念与React则一样,即"一切都是组件,组件化思想方便于模块化的开发,是前端领域的一大趋势. 2.内部指令 2-1.v-

  • AngularJs 60分钟入门基础教程

    AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,所有的操作都在这张页面上完成,由JavaScript来控制不同view在这个页面上的呈现.本文源于Youtube上一个不错的AngularJs的入门教程视频:AngularJS Fundamentals In 60-ish Minutes,主要讲解了

  • xhEditor编辑器入门基础

    1.1. 在线可视化HTML编辑器概述 在Web程序应用中,最常见的一种行为是信息和言论的发布和交流.而在信息发布的同时,往往会有对信息发布的格式.类型和功能上的需求,比如:加粗.下划线等等,以使文字信息能够更形象更美观的传达给阅读者,同时也提高信息发布的工作效率.在这个需求的背景下,HTML在线编辑器就应运而生了. 顾名思义,在线HTML编辑器就是在线编辑HTML代码的工具,它经常被应用于留言板留言.论坛发贴.Blog编写日志或等需要用户输入HTML的地方,是Web应用的常用模块之一.在线HT

随机推荐