【rest服务】

  REST服务是一种软件架构模式,只是一种风格。REST服务采用HTTP做传输协议。

REST对于HTTP的利用分为以下两种:

一.资源定位

  REST要求对方资源定位更加准确,如下:

  非REST方式:http://127.0.0.1:12345/queryUser.action?userType=student&id=001

  REST   方式:htpp://127.0.0.1:12345/student/001

  REST方式表示互联网上的资源更加准确,但也有缺点,当目录的层级较多时会导致较难理解。

二.资源操作

  利用HTTP的GET、POST、PUT、DELETE四种操作来表示数据库操作的SELECT、UPDATE、INSERT、DELETE操作。

  比如:

  1.查询学生的方法,设置HTTP的请求方法为GET,

  url如下:http://127.0.0.1:12345/user/student/001

  2.添加学生的方法,设置HTTP的请求方法为PUT,

  url如下:http://127.0.0.1:12345/user/student/001/张三/...
  REST常用于资源定位,资源的操作方式较少使用。

【使用场景】

  REST是一种软件架构理念,现在被移植到web服务上,那么在开发Web服务上,偏于面向资源的服务的适用于REST,REST简单易用,效率高,SOAP成熟度较高,安全性好。

  注意:REST不等于WebService,JAX-RS只是将REST设计风格应用到Web服务上。

【代码需求】

查询学生信息,传输参数为学生信息id,在url中定义,如http://127.0.0.1:12345/user/student/001,

其中001就是参数。

注意:REST一般返回结果格式:XML 或 JSON

【工程截图】

【Student.java】

package com.Higgin.ws.cxf.rest.pojo;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="student")
public class Student {
private long id;
private String name;
private Date birthday; //忽略 get/set 方法.....
}

【StudentService.java】

package com.Higgin.ws.cxf.rest.service;

import java.util.List;

import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import com.Higgin.ws.cxf.rest.pojo.Student; @WebService
@Path("/student")
public interface StudentService { //查询学生信息
@GET //http的get方法
@Path("/query/{id}") //id参数通过url传递
@Produces(MediaType.APPLICATION_XML) //设置媒体类型xml格式
public Student queryStudent(@PathParam("id")long id); //查询学生列表
@GET
@Path
("/queryList/{type}")
//设置媒体类型为XML格式和JSON格式
@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_XML})
/* 如果想让rest返回xml,需要在rest的url后边添加 ?_type=xml,默认为xml
如果想让rest返回json.需要在rest的url后边添加?_type=json*/
public List<Student> queryStudentList(@PathParam("type") String type);
}

【StudentServiceImpl.java】

package com.Higgin.ws.cxf.rest.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List; import com.Higgin.ws.cxf.rest.pojo.Student; public class StudentServiceImpl implements StudentService{ @Override
public Student queryStudent(long id) {
//使用静态数据来表示
Student student=new Student();
student.setId(id);
student.setName("张三");
student.setBirthday(new Date());
return student;
} @Override
public List<Student> queryStudentList(String type) {
//使用静态数据来表示
List<Student> list=new ArrayList<>();
Student student1=new Student();
student1.setId();
student1.setName("张三");
student1.setBirthday(new Date()); Student student2=new Student();
student2.setId();
student2.setName("张三");
student2.setBirthday(new Date()); list.add(student1);
list.add(student2); return list;
}
}

【StudentServer.java】

package com.Higgin.ws.cxf.rest.server;

import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;

import com.Higgin.ws.cxf.rest.service.StudentServiceImpl;

public class StudentServer {

    public static void main(String[] args) {
//使用jaxrsServerFactoryBean发布rest服务
JAXRSServerFactoryBean jaxrsServerFactoryBean=new JAXRSServerFactoryBean();
//设置rest的服务地址
jaxrsServerFactoryBean.setAddress("http://127.0.0.1:12345/rest");
//设置服务对象
jaxrsServerFactoryBean.setServiceBean(new StudentServiceImpl());
//设置资源对象(如果有多个pojo对象,对象中间以","隔开即可)
jaxrsServerFactoryBean.setResourceClasses(StudentServiceImpl.class);
//发布rest服务
jaxrsServerFactoryBean.create();
}
}

【启动服务】使用Java Application启动main方法

1.在浏览器中输入 http://127.0.0.1:12345/rest/student/query/666

2.在浏览器中输入 http://127.0.0.1:12345/rest/student/queryList/123

3.在浏览器中输入 http://127.0.0.1:12345/rest/student/queryList/001?_type=xml

4.在浏览器中输入 http://127.0.0.1:12345/rest/student/queryList/001?_type=json

14_CXF发布REST服务的更多相关文章

  1. 使用IIS发布WCF服务

    上一篇是Windows服务为宿主的WCF服务,现在用IIS为宿主发布WCF服务. 第一步:肯定是新建一个WCF服务啦[是WCF服务应用程序],然后在解决方案上再次添加一个新项目[我们选择WCF服务库, ...

  2. 如何使用花生壳 发布WCF服务 进行外网访问

    当我们发布WCF服务的时候,可以直接通过服务器的域名或者IP进行. 但是如果仅仅是通过花生壳进行域名解析,需要我们自己在设置的时候注意以下几点, 直接用图说明问题 1.首先配置花生壳,在红色处填写一个 ...

  3. 天地图应用ArcGIS发布的服务

    本文包含三个部分:利用ArcMap将Excel的数据转化为ArcGIS MXD文件.利用ArcMap发布服务.天地图添加ArcGIS发布的服务. 一 MXD文件的生成 假设在Excel中存有两个点的坐 ...

  4. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  5. 利用 PortableBasemapServer 发布地图服务

    前段时间需要给自己的C/S系统加一个地图,但是没有数据,于是就想到了使用网上的切片地图,但是C/S系统又不能联网,于是就想本地发布切片服务来使用. 本来想用ArcGIS Server来发布从网上下载的 ...

  6. 应用Spring MVC发布restful服务是怎样的一种体验

            摘要:“约定优于配置”这是一个相当棒的经验,SOAP服务性能差.基于配置.紧耦合,restful服务性能好.基于约定.松耦合,现在我就把使用Spring MVC发布restful服务的 ...

  7. Geoserver发布WMS服务出错分析

    使用Geoserver发布一个空间表,在图层预览的过程中没有任何问题,但是当我根据这个空间表传创建视图再发布wms服务,访问时就会报错,错误信息如下: Caused by: java.sql.SQLE ...

  8. Spring整合CXF之发布WebService服务

    今天我们来讲下如何用Spring来整合CXF,来发布WebService服务: 给下官方文档地址:http://cxf.apache.org/docs/writing-a-service-with-s ...

  9. 动态创建地图文档MXD并发布地图服务

    原文:动态创建地图文档MXD并发布地图服务 1.动态创建MXD private bool CreateMxd(string MxdPath, string MxdName) { IMapDocumen ...

随机推荐

  1. Java JNI调用c语言的dll测试

    最近复习C语言和java语言(10年没用了,温习一下),用JNI调用C语言的dll测试,以前没做过,在网上找了很多,总结如下: 环境:windows 10(64位) + JDK(32位,版本1.7.0 ...

  2. SQL Server笔记

    SQL Server所能读取的最小单位是页,每个页8KB,8个物理上连续的页就是一个区,这样数据库中每MB就包含有16个区 堆是没有聚集索引的表.如果表格上没有聚集索引,数据行将不按任何特殊顺序存储, ...

  3. [Practical Git] Filter commit history with git log arguments

    In the last lesson, we learned how to format the git log output; in this lesson we will learn how to ...

  4. Java自学成长路线(转载)

    JAVA自学之路 一:学会选择  决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等.  JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅 ...

  5. svn :Can't connect to host *.*.*.*': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

    Can't connect to host *.*.*.*': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败. -------------------------------- ...

  6. 如何获取SQL Server数据库元数据的方法

    发布时间:2007.06.15 05:05    来源:赛迪网    作者:3946469 元数据简介 元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据 ...

  7. Java基础知识强化之网络编程笔记20:Android网络通信之 Android常用OAuth登录和分享

    1.  申请百度开发者账号及百度OAuth简介. (1)申请开发者账号: http://developer.baidu.com/ (2)创建项目: http://developer.baidu.com ...

  8. web service 部署

    写的不好,全当是写给自己看的吧. 公司用飞天诚信的加密狗对网站进行加密,我要部署加密狗的web service.注:web service 由加密狗公司提供. 1.新建网站dog

  9. PHP Slim 框架初体验之无法访问控制器

    话不多说,先把报错贴出来: 刚开始用slim框架,在设置完自动加载文件和路由文件之后,我写了一个控制器: <?php use \Psr\Http\Message\ServerRequestInt ...

  10. 针对SharePointFarm场时安装部署OWA的步骤

    下面文章列出针对SharePointFarm场时安装部署OWA的步骤: http://blogs.technet.com/b/meamcs/archive/2013/03/27/office-web- ...