首页 >> 大全

restful和spring整合

2023-09-15 大全 26 作者:考证青年

此项目是在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;private  String 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 + '\'' +'}';}
}

步骤三:创建接口。接口当中包含请求地址,返回什么数据类型 此案例该接口命名为:

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提交(即新增)数据public  int insertUsers(Users users);@Path("/update")@PUT//PUT更新数据public  int updateUsers(Users users);@Path("/delete/{uid}")//{uid}表示占位,前端请求地址中传过来的参数由uid获取。此时restful风格就体现出来了,前台传值格式为delete/1,1是传过来的参数@DELETE//DELETE删除数据public  int 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类有好几种数据格式,只需点一下就会提示。public  Users 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 findall() {List list=new ArrayList();System.out.println("findall");for (int i = 0; i < 5; i++) {Users users=new Users();users.setUserid(110);users.setUsername("张三");users.setPassword("abc");list.add(users);}return list;}
}

步骤五:在文件夹下创建xml配置文件,配置如下命名空间

xmlns:jaxrs=“”

整合资源__整合营销

案例中我将该xml文件命名为:cxf.xml


    

步骤六:配置WEB-INF下的web.xml文件


Archetype Created Web ApplicationcontextConfigLocationclasspath:cxf.xmlorg.springframework.web.context.ContextLoaderListeneraaorg.apache.cxf.transport.servlet.CXFServletaa/testcxf/*

服务端案例结构图:

客户端:↓

该案例服务端命名为:

步骤一:在pom.xml中添加依赖

 javax.servletjavax.servlet-api3.1.0providedorg.springframeworkspring-webmvc5.0.8.RELEASEorg.springframeworkspring-context5.0.8.RELEASEorg.springframeworkspring-context-support5.0.8.RELEASEorg.springframeworkspring-web5.0.8.RELEASEjavax.servletjstl1.2org.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.6

_整合资源_整合营销

步骤二:创建将服务端创建的实体类(即Users)复制给客户端,因为后面要用。

package com.qf.entity;//原来的费restful的客户端的代码都是由wsimport -s等命令自动生成的,但restful风格只是公司内部应用,因此还不普及,这个实体类只能从服务端复制过来
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;private  String 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 + '\'' +'}';}
}

步骤三:在下创建xml,用于创建对象,建立与服务端的联系。






步骤四:在web.xml加载下创建的xml配置文件


Archetype Created Web Applicationaaorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:client.xmlaa/*

步骤五:在里建立网页请求地址处理方法(注意是网页,不是服务端)

package com.qf.contller;import com.qf.entity.Users;
import org.apache.cxf.jaxrs.client.WebClient;
import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;public class UsersController {@Resourceprivate WebClient webClient;//这是我们在client.xml文件创建的并bean对象,用@Resources注入。@RequestMapping("/getusers")//此方法处理网页中传来的getusers请求。也就是说最终是用http://localhost:8080/testcxf/testrestful/getusers?userid=11这种方式访问的public String get(int userid){//从服务端获得用户信息Users users = webClient.path("/getbyid" + userid)//webClient.path()是在client创建的webClient的bean对象原有的基础上拼上请求地址要携带的参数,即服务端请求地址对应的处理方法的参数。.get(Users.class);//Users是服务端查询方法 的返回值类型。System.out.println(users);return "success";//执行成功后要跳转去的网页}
}

客户端案例结构图:

==注意:此案例似乎只有两个才能成功,因为启动一方,另一方的就会被占用,即使端口号不一样

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了