restful和spring整合

此项目是在IDEA中创建的MAVEN的web项目
服务端:↓步骤一:在pom.xml中添加如下依赖
org.apache.cxfcxf-rt-frontend-jaxrs3.0.1org.apache.cxfcxf-rt-transports-http-jetty3.0.1org.apache.cxfcxf-rt-rs-client3.0.1org.apache.cxfcxf-rt-rs-extension-providers3.0.1org.codehaus.jettisonjettison1.3.7com.fasterxml.jackson.jaxrsjackson-jaxrs-json-provider2.9.6org.springframeworkspring-web5.0.8.RELEASEorg.springframeworkspring-context-support5.0.8.RELEASE
步骤二:创建会用到的实体类(记得给该实体类加@注解) 此案例该实体类命名为:Users
package com.qf.Users;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement//实体类注解,标记当前要转换的格式 。@XmlRootElement是基于restful风格的webService,客户端和服务器端之间通讯可以使用xml数据,json数据,@XmlRootElement用来指定对象序列化为xml或json数据时的根节点名称,也可以指定名字@XmlRootElement(name="") 。如果指定名字,客户端和服务端的name值要相同 。public class Users {private int userid;private String username;privateString password;public int getUserid() {return userid;}public void setUserid(int userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "Users{" +"userid=" + userid +", username='" + username + '\'' +", password='" + password + '\'' +'}';}}
步骤三:创建接口 。接口当中包含请求地址,返回什么数据类型 此案例该接口命名为:
【restful和spring整合】package com.qf.dao;import com.qf.Users.Users;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;import java.util.List;@Produces("*/*")//规定了服务器返回给客户端的数据格式 。此地*/*代表格式不限制public interface UsersDao {@Path("/insert")@POST//post提交(即新增)数据publicint insertUsers(Users users);@Path("/update")@PUT//PUT更新数据publicint updateUsers(Users users);@Path("/delete/{uid}")//{uid}表示占位,前端请求地址中传过来的参数由uid获取 。此时restful风格就体现出来了,前台传值格式为delete/1,1是传过来的参数@DELETE//DELETE删除数据publicint deleteUsers(@PathParam("uid") int userid);//@PathParam("uid") 代表将uid和userid绑定@Path("/getbyid/{id}")//restful这个占位符记得加{}大括号 。客户端访问该方法的正确地址是:http://localhost:8080/users/getbyid/{id},即发布地址/请求地址/参数的格式才能访问到@GET//GET取(查询)数据@Produces(MediaType.APPLICATION_JSON)//单独指定该方法返回值转换成json对象,表示以json格式返回给客户端 。MediaType类有好几种数据格式,只需点一下就会提示 。publicUsers findbyid(@PathParam("id") int userid);@Path("/getall")@GET@Produces(MediaType.APPLICATION_JSON)public List findall();}
步骤四:创建的实现类,该类写请求地址具体的处理方法 此案例该实现类命名为为:
package com.qf.dao.impl;import com.qf.Users.Users;import com.qf.dao.UsersDao;import java.util.ArrayList;import java.util.List;public class UsersDaoImpl implements UsersDao{//给数据库新增一条数据public int insertUsers(Users users) {System.out.println("insertUsers="+users);return 11;}//修改一条数据public int updateUsers(Users users) {System.out.println("updateUsers="+users);return 22;}//给数据库删除一条数据public int deleteUsers(int userid) {System.out.println("deleteUsers="+userid);return 33;}//从数据库中根据id查询一条数据public Users findbyid(int userid) {System.out.println("findbyid="+userid);Users users=new Users();users.setUserid(110);users.setUsername("张三");users.setPassword("abc");return users;}//查询数据库中的所有数据public List