7–Jersey+SQLServer+Hibernate4.3+Spring3.2
最后更新于:2022-04-01 20:01:36
## 一、总体说明
本例运行演示了用 Jersey 构建 RESTful 服务中,如何集成 Spring3
## 二、环境
* 1.上文的项目RestDemo
* 2.Spring及其他相关的jar ,导入项目
![Spring及其他相关的jar](http://h.hiphotos.bdimg.com/album/s%3D550%3Bq%3D90%3Bc%3Dxiangce%2C100%2C100/sign=d3d08e3730fa828bd5239de6cd243009/b03533fa828ba61ec73dc21d4234970a304e5934.jpg?referer=743b926cdec451daafe138dba7ea&x=.jpg)
## 三、配置
1.根目录下下创建 Spring 的配置文件`applicationContext.xml`;
配置如下:
## 四、运行
1.先运行项目
2.运行UserClient.java测试,控制台输出如下
~~~
****增加用户addUser****
****查询所有getAllUsers****
[{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"006","userName":"Susan","age":"21"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}]
****修改用户updateUser****
****根据id查询用户****
006Susan33
****查询所有getAllUsers****
[{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"006","userName":"Susan","age":"33"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}]
****删除用户****
****查询所有getAllUsers****
[{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}]
~~~
**本章源码(含jar包)**:[https://github.com/waylau/RestDemo/tree/master/jersey-demo7-sqlserver-hibernate-spring3](https://github.com/waylau/RestDemo/tree/master/jersey-demo7-sqlserver-hibernate-spring3)
';
6–Jersey+SQLServer+Hibernate4.3
最后更新于:2022-04-01 20:01:34
## 一、总体说明
本例运行演示了用Jersey构建RESTful服务中,如何同过Hibernate将数据持久化进SQLServer的过程
## 二、环境
1.上文的项目RestDemo
2.SQLServer2005
## 三、配置
与上文mysql的配置不同点主要在hibernate.cfg.xml文件;
配置如下:
~~~
net.sourceforge.jtds.jdbc.Driver
jdbc:jtds:sqlserver://192.168.1.10:1433;RestDemo
sa
aA123456
RestDemo
1
org.hibernate.dialect.SQLServerDialect
thread
org.hibernate.cache.internal.NoCacheProvider
true
update
~~~
## 四、问题
可能会出现如下错误
~~~
ERROR: 指定的架构名称 "RestDemo" 不存在,或者您没有使用该名称的权限。
三月 26, 2014 3:38:43 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into RestDemo.T_USER (userName, age, USERID) values (?, ?, ?)
三月 26, 2014 3:38:43 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 208, SQLState: S0002
三月 26, 2014 3:38:43 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 对象名 'RestDemo.T_USER' 无效。
~~~
解决方案:
将配置文件中的“hibernate.default_schema”值修改为如下即可:
~~~
RestDemo.dbo
~~~
或者去掉上面的配置,在“User.hbm.xml”修改如下
~~~
~~~
';
5–Jersey+MySQL5.6+Hibernate4.3
最后更新于:2022-04-01 20:01:31
## 一、总体说明
本例运行演示了用Jersey构建RESTful服务中,如何同过Hibernate将数据持久化进MySQL的过程
## 二、环境
1.上文的项目RestDemo
2.MySQL5.6下载[http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-win32.zip](http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Final/hibernate-release-4.3.4.Final.zip)
3.Hibernate4.3.4下载[http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Final/hibernate-release-4.3.4.Final.zip](http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Final/hibernate-release-4.3.4.Final.zip)
4.Java程序连接MySQL的驱动mysql-connector-java-5.1.29-bin.jar下载
[http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.29.zip](http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.29.zip)
## 三、数据库准备
1.搭建MySQL数据库
2.创建数据库RestDemo ,及数据表t_user,结构如下
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`userId` varchar(50) NOT NULL,
`userName` varchar(50) NOT NULL,
`age` varchar(50) NOT NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fd5e5c0.png)
ps: userId 非自增长类型,需要在业务添加
## 四、引入Hibernate
1.解压Hibernate的包,在lib\required文件夹下所有jar引入进项目
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fd7da61.png)
2.解压mysql-connector-java-5.1.29.zip,将mysql-connector-java-5.1.29-bin.jar引入进项目
3.在项目的根目录创建hibernate的配置文件hibernate.cfg.xml,内容如下:
~~~
com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/RestDemo
root
1
org.hibernate.dialect.MySQLDialect
thread
org.hibernate.cache.internal.NoCacheProvider
true
update
~~~
4.在项目User.java 的同个目录下,创建该类的映射文件User.hbm.xml
~~~
~~~
5.创建包com.waylau.rest.util,在该包下创建HibernateUtil.java
~~~
package com.waylau.rest.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
/**
* Hibernate 初始化配置工具类
* @author waylau.com
* 2014-3-23
*/
public class HibernateUtil {
private static Configuration configuration;
private static SessionFactory sessionFactory;
private static StandardServiceRegistry standardServiceRegistry;
static {
try {
//第一步:读取Hibernate的配置文件 hibernamte.cfg.xml文件
configuration = new Configuration().configure("hibernate.cfg.xml");
//第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
StandardServiceRegistryBuilder sb = new StandardServiceRegistryBuilder();
sb.applySettings(configuration.getProperties());
//创建注册服务
standardServiceRegistry = sb.build();
//第三步:创建会话工厂
sessionFactory = configuration.buildSessionFactory(standardServiceRegistry);
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
~~~
6.在项目中建com.waylau.rest.dao包,在该包下建立User操作的接口UserDao.java
~~~
package com.waylau.rest.dao;
import java.util.List;
import com.waylau.rest.bean.User;
/**
* User Dao 接口
* @author waylau.com
* 2014-3-18
*/
public interface UserDao {
public User getUserById(String id);
public boolean deleteUserById(String id);
public boolean createUser(User user);
public boolean updateUser(User user);
public List getAllUsers();
}
~~~
7.在项目中建com.waylau.rest.dao.impl包,在该包下建立User操作接口的实现UserDaoImpl.java
~~~
package com.waylau.rest.dao.impl;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.waylau.rest.bean.User;
import com.waylau.rest.dao.UserDao;
import com.waylau.rest.util.HibernateUtil;
/**
* 用户DAO实现
* @author waylau.com
* 2014-3-23
*/
public class UserDaoImpl implements UserDao {
@Override
public User getUserById(String id) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session s = null;
Transaction t = null;
User user = null;
try{
s = sessionFactory.openSession();
t = s.beginTransaction();
String hql = "from User where userId="+id;
Query query = s.createQuery(hql);
user = (User) query.uniqueResult();
t.commit();
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close();
}
return user;
}
@Override
public boolean deleteUserById(String id) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session s = null;
Transaction t = null;
boolean flag = false;
try{
s = sessionFactory.openSession();
t = s.beginTransaction();
User user = new User();
user.setUserId(id);
s.delete(user);
t.commit();
flag = true;
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close();
}
return flag;
}
@Override
public boolean createUser(User user) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session s = null;
Transaction t = null;
boolean flag = false;
try{
s = sessionFactory.openSession();
t = s.beginTransaction();
s.save(user);
t.commit();
flag = true;
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close();
}
return flag;
}
@Override
public boolean updateUser(User user) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session s = null;
Transaction t = null;
boolean flag = false;
try{
s = sessionFactory.openSession();
t = s.beginTransaction();
s.update(user);
t.commit();
flag = true;
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close();
}
return flag;
}
@Override
public List getAllUsers() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session s = null;
Transaction t = null;
List uesrs = null;
try{
s = sessionFactory.openSession();
t = s.beginTransaction();
String hql = "select * from t_user";
Query query = s.createSQLQuery(hql).addEntity(User.class);
query.setCacheable(true); // 设置缓存
uesrs = query.list();
t.commit();
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close();
}
return uesrs;
}
}
~~~
8.修改项目中 com.waylau.rest.resources包下的UserResource.java,使之前在内存中模拟CURD转为在数据库中实现
~~~
package com.waylau.rest.resources;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import com.waylau.rest.bean.User;
import com.waylau.rest.dao.impl.UserDaoImpl;
/**
* 用户资源
* @author waylau.com
* 2014-3-19
*/
@Path("/users")
public class UserResource {
private UserDaoImpl userDaoImpl = new UserDaoImpl();
/**
* 增加
* @param user
*/
@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void createUser(User user)
{
userDaoImpl.createUser(user);
}
/**
* 删除
* @param id
*/
@DELETE
@Path("{id}")
public void deleteUser(@PathParam("id")String id){
userDaoImpl.deleteUserById(id);
}
/**
* 修改
* @param user
*/
@PUT
@Consumes(MediaType.APPLICATION_XML)
public void updateUser(User user){
userDaoImpl.updateUser(user);
}
/**
* 根据id查询
* @param id
* @return
*/
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public User getUserById(@PathParam("id") String id){
User u = userDaoImpl.getUserById(id);
return u;
}
/**
* 查询所有
* @return
*/
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List getAllUsers(){
List users = new ArrayList();
users = userDaoImpl.getAllUsers();
return users;
}
}
~~~
## 五、运行
1.将服务端运行后
2.运行UserClient客户端,可以看到数据库已经实现增删改查
完整项目架构如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fd9a14e.png)
================完整项目代码已经上传======
https://github.com/waylau/Restdemo
';
4–通过jersey-client客户端调用Jersey的Web服务模拟CURD
最后更新于:2022-04-01 20:01:29
## 一、总体说明
通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增、删、改、查等操作。
服务端主要是通过内存的方式,来模拟用户的增加、删除、修改、查询等操作。
## 二、创建服务端
1.在上文项目中,
在“com.waylau.rest.resources.UserResource“中修改代码,
首先创建一个HashMap,用来保存添加的用户
~~~
private static Map userMap = new HashMap();
~~~
2.创建增、删、改、查 用户资源等操作
~~~
/**
* 增加
* @param user
*/
@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void createStudent(User user)
{
userMap.put(user.getUserId(), user );
}
/**
* 删除
* @param id
*/
@DELETE
@Path("{id}")
public void deleteStudent(@PathParam("id")String id){
userMap.remove(id);
}
/**
* 修改
* @param user
*/
@PUT
@Consumes(MediaType.APPLICATION_XML)
public void updateStudent(User user){
userMap.put(user.getUserId(), user );
}
/**
* 根据id查询
* @param id
* @return
*/
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public User getUserById(@PathParam("id") String id){
User u = userMap.get(id);
return u;
}
/**
* 查询所有
* @return
*/
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List getAllUsers(){
List users = new ArrayList();
users.addAll( userMap.values() );
return users;
}
~~~
## 三、创建客户端程序
1.创建包“com.waylau.rest.client”,在包下建一个UserClient.java,代码如下:
~~~
package com.waylau.rest.client;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import com.waylau.rest.bean.User;
/**
* 用户客户端,用来测试资源
* @author waylau.com
* 2014-3-18
*/
public class UserClient {
private static String serverUri = "http://localhost:8089/RestDemo/rest";
/**
* @param args
*/
public static void main(String[] args) {
addUser();
getAllUsers();
updateUser();
getUserById();
getAllUsers();
delUser();
getAllUsers();
}
/**
* 添加用户
*/
private static void addUser() {
System.out.println("****增加用户addUser****");
User user = new User("006","Susan","21");
Client client = ClientBuilder.newClient();
WebTarget target = client.target(serverUri + "/users");
Response response = target.request().buildPost(Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
response.close();
}
/**
* 删除用户
*/
private static void delUser() {
System.out.println("****删除用户****");
Client client = ClientBuilder.newClient();
WebTarget target = client.target(serverUri + "/users/006");
Response response = target.request().delete();
response.close();
}
/**
* 修改用户
*/
private static void updateUser() {
System.out.println("****修改用户updateUser****");
User user = new User("006","Susan","33");
Client client = ClientBuilder.newClient();
WebTarget target = client.target(serverUri + "/users");
Response response = target.request().buildPut( Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
response.close();
}
/**
* 根据id查询用户
*/
private static void getUserById() {
System.out.println("****根据id查询用户****");
Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
WebTarget target = client.target(serverUri + "/users/006");
Response response = target.request().get();
User user = response.readEntity(User.class);
System.out.println(user.getUserId() + user.getUserName() + user.getAge());
response.close();
}
/**
* 查询所有用户
*/
private static void getAllUsers() {
System.out.println("****查询所有getAllUsers****");
Client client = ClientBuilder.newClient();
WebTarget target = client.target(serverUri + "/users");
Response response = target.request().get();
String value = response.readEntity(String.class);
System.out.println(value);
response.close(); //关闭连接
}
}
~~~
## 四、运行
启动服务端项目,运行客户端程序UserClient,控制台输出如下
~~~
****增加用户addUser****
****查询所有getAllUsers****
[{"userId":"006","userName":"Susan","age":"21"}]
****修改用户updateUser****
****根据id查询用户****
006Susan33
****查询所有getAllUsers****
[{"userId":"006","userName":"Susan","age":"33"}]
****删除用户****
****查询所有getAllUsers****
[]
~~~
## 五、总结
1.客户端如果需要进行JSON转换,需要进行JSON注册
~~~
Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);
~~~
2.WebTarget 指明了要请求的资源的地址
3.target.request(). 后面跟的是请求的方法:POST,GET,PUT或DELETE
';
3–JAVA对象转成JSON输出
最后更新于:2022-04-01 20:01:27
## 一、 总体说明
XML和JSON 是最为常用的数据交换格式。本例子演示如何将java对象,转成JSON输出。
## 二、流程
1.在上文项目中,
在“com.waylau.rest.resources.UserResource“中增加代码,代码如下:
~~~
@GET
@Path("/getUserJson")
@Produces(MediaType.APPLICATION_JSON)
public User getUserJson() {
User user = new User();
user.setAge("27");
user.setUserId("005");
user.setUserName("Fmand");
return user;
}
~~~
MediaType.APPLICATION_JSON 说明输出的是JSON格式
2,运行项目,浏览器输入[http://localhost:8089/RestDemo/rest/users/getUserJson](http://localhost:8089/RestDemo/rest/users/getUserJson)
期望获取到json的数据,此时,项目报错
~~~
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.waylau.rest.bean.User, genericType=class com.waylau.rest.bean.User.
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:293)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:571)
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:378)
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:368)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262)
~~~
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fd2334d.png)
此时,需要获取json转换包的支持 。
可以由多种方式实现:MOXy、JSON-P、Jackson、Jettison等,本例为Jackson。
3. jackson-all-1.9.11.jar 下载地址[http://wiki.fasterxml.com/JacksonDownload](http://wiki.fasterxml.com/JacksonDownload)
4. 项目中引入jackson-all-1.9.11.jar
5.在“com.waylau.rest”目录下创建RestApplication.java
~~~
package com.waylau.rest;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.server.ResourceConfig;
/**
* 应用
* @author waylau.com
* 2014-3-18
*/
public class RestApplication extends ResourceConfig {
public RestApplication() {
//服务类所在的包路径
packages("com.waylau.rest.resources");
//注册JSON转换器
register(JacksonJsonProvider.class);
}
}
~~~
6.修改web.xml,初始化从RestApplicaton进入应用,如下:
~~~
Way REST Service
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.waylau.rest.RestApplication
1
Way REST Service
/rest/*
~~~
7.运行项目,再次访问[http://localhost:8089/RestDemo/rest/users/getUserJson](http://localhost:8089/RestDemo/rest/users/getUserJson)
即可输出JSON文本
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fd43ca9.png)
';
2–JAVA对象转成XML输出
最后更新于:2022-04-01 20:01:25
## 一、 总体说明
XML和JSON 是最为常用的数据交换格式。本例子演示如何将java对象,转成XML输出。
## 二、流程
1.在上文的例子中,创建一个包“com.waylau.rest.bean”
2.在该包下创建一个JAVA类"User"
~~~
package com.waylau.rest.bean;
import javax.xml.bind.annotation.XmlRootElement;
/*
* 用户 bean
* @author waylau.com
* 2014-3-17
*/
@XmlRootElement
public class User {
private String userId;
private String userName;
private String age;
public User() {};
public User(String userId, String userName, String age) {
this.userId = userId;
this.userName = userName;
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
~~~
注意:该类上面增加了一个注解“@XmlRootElement”,在将该类转化成XML时,说明这个是XML的根节点。
3.在“com.waylau.rest.resources”中,增加资源“UserResource“,代码如下:
~~~
package com.waylau.rest.resources;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import com.waylau.rest.bean.User;
@Path("/users")
public class UserResource {
private static Map userMap = new HashMap();//存储用户
/**
* 查询所有
* @return
*/
@GET
@Produces(MediaType.APPLICATION_XML)
public List getAllUsers(){
List users = new ArrayList();
User u1 = new User("001","WayLau","26");
User u2 = new User("002","King","23");
User u3 = new User("003","Susan","21");
userMap.put(u1.getUserId(), u1);
userMap.put(u2.getUserId(), u2);
userMap.put(u3.getUserId(), u3);
users.addAll( userMap.values() );
return users;
}
@GET
@Path("/getUserXml")
@Produces(MediaType.APPLICATION_XML)
public User getUserXml() {
User user = new User();
user.setAge("21");
user.setUserId("004");
user.setUserName("Amand");
return user;
}
}
~~~
其中MediaType.APPLICATION_XML 说明了是以XML形式输出
在浏览器输入http://localhost:8089/RestDemo/rest/users/getUserXml,输出单个对象
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fcd4837.png)
在浏览器输入 http://localhost:8089/RestDemo/rest/users 输出对象的集合
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fcf0084.png)
';
1–HelloWorld
最后更新于:2022-04-01 20:01:22
## 一、环境
1、Eclipse Juno R2
2. Tomcat 7
3. Jersey 2.7 下载地址( https://jersey.java.net/download.html)
## 二、流程
1.Eclipse 中创建一个 Dynamic Web Project ,本例为“RestDemo”
2.按个各人习惯建好包,本例为“com.waylau.rest.resources”
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fc52599.png)
3.解压jaxrs-ri-2.7,
将api、ext、lib文件夹下的jar包都放到项目的lib下;
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fc7154b.png)
项目引入jar包
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fc87090.png)
4.在resources包下建一个class“HelloResource”
~~~
package com.waylau.rest.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello World!" ;
}
@GET
@Path("/{param}")
@Produces("text/plain;charset=UTF-8")
public String sayHelloToUTF8(@PathParam("param") String username) {
return "Hello " + username;
}
}
~~~
5.修改web.xml,添加基于Servlet-的部署
~~~
Way REST Service
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.waylau.rest.resources
1
Way REST Service
/rest/*
~~~
6.项目部署到tomcat,运行
7.浏览器输入要访问的uri地址
[http://localhost:8089/RestDemo/rest/hello](http://localhost:8089/RestDemo/rest/hello)
输出Hello World!
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fca41e0.png)
[http://localhost:8089/RestDemo/rest/hello/Way你好吗](http://localhost:8089/RestDemo/rest/hello/Way你好吗)
输出Hello Way你好吗
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-24_56cd25fcbd7ac.png)
参考:https://jersey.java.net/documentation/latest/user-guide.html
';
前言
最后更新于:2022-04-01 20:01:20
> 原文出处:[用 Jersey 构建 RESTful 服务](http://blog.csdn.net/column/details/jersey-rest.html)
作者:[kkkloveyou](http://blog.csdn.net/kkkloveyou)
**本系列文章经作者授权在看云整理发布,未经作者允许,请勿转载!**
# 用 Jersey 构建 RESTful 服务
> 基于 Jersey ,Hibernate,Mysql,Spring,JQuery,AngularJS... 构建 REST 的 Web 服务。一步一步采用实例的方式来带你走近 REST 的世界!
';