JAVASpringHibernate使用Jersey开发RestWEBSERVICES.doc_第1页
JAVASpringHibernate使用Jersey开发RestWEBSERVICES.doc_第2页
JAVASpringHibernate使用Jersey开发RestWEBSERVICES.doc_第3页
JAVASpringHibernate使用Jersey开发RestWEBSERVICES.doc_第4页
JAVASpringHibernate使用Jersey开发RestWEBSERVICES.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、名词解释1 Rest Web ServicesRepresentational State Transfer, 具象状态传输。REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识。客户端应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集。RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务。通常,RESTful Web 服务应该定义以下方面: Web 服务的基/根 URI,比如 http:/host/resources。 支持 MIME 类型的响应数据,包括 JSON/XML/ATOM 等等。 服务支持的操作集合(例如POST、GET、PUT或DELETE)。2 注释说明2.1 Produces 表示返回的格式Produces(MediaType.APPLICATION_XML) 表示返回的xml格式Produces(MediaType.APPLICATION_JSON) 表示返回的json格式Produces( MediaType.TEXT_PLAIN) 表示返回的纯文本格式2.2 ConsumesConsumes ( application/x-www-form-urlencoded) 窗体数据被编码为名称/值对Consumes Singleton XmlRootElementProvider二、初始化工程1下载jar包/maven/2/com/sun/jersey/jersey-archive/1.1.2-ea/jersey-archive-1.1.2-ea.zip2 新建web工程使用MyEclipse8.5新建web工程,命名为RestfulDemo,将上述下载jar包导入lib3 修改web.xml添加如下内容 ServletAdaptor com.sun.jersey.server.impl.container.servlet.ServletAdaptor 1 ServletAdaptor /* 4 将工程部署至tomcat服务器生成url,例如http:/localhost:8080/RestfulDemo这个url是服务的最基本的url,后面的服务都是基于这个地址添加路径组合,例如http:/localhost:8080/RestfulDemo/HelloWorldRS三、使用jersey开发简单的rest web services1 GET1.1服务端package ;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.QueryParam;import javax.ws.rs.core.Context;Path(/HelloWorldRS) / 本服务的访问路径,与工程路径组合使用public class HelloWorldRS Map map = new HashMap(); public HelloWorldRS() map.put(1,A); map.put(2,B); map.put(3,C);GET /表明是一个GET方法Path(/sayHelloByGET) /调用的时候要加入此路径,精确指定调用的函数Produces(text/html) / 输出参数的类型public String sayHelloByGET(QueryParam(from)String fromValue, /客户端传来的参数key为fromContext HttpServletRequest request) System.out.println(fromValue); return map.get(fromValue); 1.2 调用1.1get服务的客户端package com.client;import javax.ws.rs.core.*;import com.sun.jersey.api.client.*;import com.sun.jersey.core.util.*;public class JerseyClientGet /基础的服务url 包含工程名+服务类的pathString url = http:/localhost:8080/RestfulDemo/HelloWorldRS; public static void main(String args) new JerseyClientGet().go(); public void go() Client client = Client.create(); / /sayHelloByGET为某精确函数的path WebResource webResource = client.resource(url+/sayHelloByGET); / 设定要帶的参数 MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add(from, 3); /from是个key,服务端要根据from获得3,类似map /调用GET服务时使用如下方法String str = webResource.queryParams(queryParams).get(String.class); System.out.println(str); 如果调用服务端的函数是GET,则要用上述红颜色的.get方法2 POST2.1服务端package ;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.QueryParam;import javax.ws.rs.core.Context;Path(/HelloWorldRS) / 本服务的访问路径,与工程路径组合使用public class HelloWorldRS Map map = new HashMap(); public HelloWorldRS() map.put(1,A); map.put(2,B); map.put(3,C);POST /表明是一个POST方法Path(/sayHelloByPOST) /调用的时候要加入此路径,精确指定调用的函数Produces(text/html) / 输出参数的类型public String sayHelloByPOST (QueryParam(from)String fromValue, /客户端post传来的参数key为fromContext HttpServletRequest request) System.out.println(fromValue); return map.get(fromValue); 2.2调用2.1post服务的客户端package com.client;import javax.ws.rs.core.*;import com.sun.jersey.api.client.*;import com.sun.jersey.core.util.*;public class JerseyClientGet /基础的服务url 包含工程名+服务类的path private String url = http:/localhost:8080/RestfulDemo/HelloWorldRS; public static void main(String args) new JerseyClientGet().go(); public void go() Client client = Client.create(); /POST WebResource webResource = client.resource(url+/sayHelloByPOST); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add(from, 2); String resp = webResource.queryParams(queryParams) .post(String.class, queryParams); System.out.println(resp); 3 DELETE3.1服务端package ;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.QueryParam;import javax.ws.rs.core.Context;Path(/HelloWorldRS) / 本服务的访问路径,与工程路径组合使用public class HelloWorldRS Map map = new HashMap(); public HelloWorldRS() map.put(1,A); map.put(2,B); map.put(3,C);DELETE /表明是一个delete方法Path(/delSomePor) /调用的时候要加入此路径,精确指定调用的函数Produces(text/html) / 输出参数的类型public String delSomePor (QueryParam(from)String fromValue, /客户端delete传来的参数key为fromContext HttpServletRequest request) System.out.println(fromValue); map.remove(fromValue); return String.valueOf(map.size(); 3.2调用3.1delete服务的客户端package com.client;import javax.ws.rs.core.*;import com.sun.jersey.api.client.*;import com.sun.jersey.core.util.*;public class JerseyClientGet /基础的服务url 包含工程名+服务类的path private String url = http:/localhost:8080/RestfulDemo/HelloWorldRS; public static void main(String args) new JerseyClientGet().go(); public void go() Client client = Client.create(); /DELETE WebResource webResource = client.resource(url+/delSomePor); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add(from, 2); String str = webResource.queryParams(queryParams).delete(String.class); System.out.println(str); 四、Spring+Hibernate与jersey结合Spring+hiberate 数据库 oracle服务器 tomcat6.0开发工具 MyEclipse8.51创建Java Web工程,命名为RestSpringDemo2 导入jar包并将所依赖的Jar包放入工程的WebRootWEB-INFlib目录下面,主要是Spring相关Jar包、Jersey相关Jar包,其他依赖包自行加入。Spring所依赖的Jar包: Jersey所依赖的Jar包:Hibernate所以来的jar包其他jar包,包含dbcp数据源包,记得添加oracle驱动包3 配置web.xmlRestSpringDemocontextConfigLocation/WEB-INF/applicationContext.xmlencodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtrueencodingFilter/*org.springframework.web.context.ContextLoaderListener JerseyServletcom.sun.jersey.spi.spring.container.servlet.SpringServlet perty.packages JerseyServlet/rs/*index.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jsp4 配置spring配置文件applicationContext.xml在WEB-INF文件夹下新建xml文件appliactionContext.xml,内容如下Spring公共配置文件!- -org.hibernate.dialect.Oracle9Dialect true true org.hibernate.cache.EhCacheProvider 100 80 true org.hibernate.hql.classic.ClassicQueryTranslatorFactory spring/hibernate/pojo/Admin.hbm.xml 5 生成pojo类在src/spring.hibernate.pojo文件内,新建Admin.java内容如下package spring.hibernate.pojo;import javax.xml.bind.annotation.XmlRootElement;/* * Admin entity. author MyEclipse Persistence Tools */XmlRootElement(name = administator)public class Admin implements java.io.Serializable / Fieldsprivate Integer id;private String username;private String password;/ Constructors/* default constructor */public Admin() /* minimal constructor */public Admin(Integer id) this.id = id;/* full constructor */public Admin(Integer id, String username, String password) this.id = id;this.username = username;this.password = password;/ Property accessorspublic Integer getId() return this.id;public void setId(Integer id) this.id = id;public String getUsername() return this.username;public void setUsername(String username) this.username = username;public String getPassword() return this.password;public void setPassword(String password) this.password = password;Hibernate对应配制文件Admin.hbm.xml,内容如下 6 开发数据库操作DAO在src/spring.hibernate.dao内生成接口IAdminDAO.java内容如下package spring.hibernate.dao;import spring.hibernate.pojo.Admin;/这个接口只包含一个保存对象的操作public interface IAdminDAO public void insert(Admin admin);在src/spring.hibernate.dao内生成操作类AdminDAO.java内容如下package spring.hibernate.dao;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import spring.hibernate.pojo.Admin;public class AdminDAO extends HibernateDaoSupport implements IAdminDAO /private SessionFactory sessionFactory;public void insert(Admin admin) /*Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();session.save(admin);mit();session.close();*/getHibernateTemplate().save(admin);/*public void setSessionFactory(SessionFactory sessionFactory) this.sessionFactory = sessionFactory;public SessionFactory getSessionFactory() return sessionFactory;*/7 使用jersey框架开发rest web service服务类在src/ 文件夹下生成类UserResourceService.javapackage ;import java.util.ArrayList;import java.util.List;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.WebApplicationException;import javax.ws.rs.core.Context;import javax.ws.rs.core.MediaType;import org.springframework.stereotype.Component;import spring.hibernate.dao.IAdminDAO;import spring.hibernate.pojo.Admin;import com.sun.jersey.spi.resource.Singleton;SingletonComponentPath(/users)public class UserResourceService private IAdminDAO firstdao; /Spring注入beanpublic void setFirstdao(IAdminDAO firstdao) this.firstdao = firstdao;ContextGETPath(getAllUser)Produces( MediaType.APPLICATION_XML) /以xml形式返回给客户端页面public List getAllUser() try List entity

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论