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 的世界!
';