页面效果(还待完善)
业务功能
用户下订单(客户端)(可能是多个)把订单重组后(服务端),供客户端调用并展示
1先搭建CXF 环境
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd" default-autowire="byName"> <!-- 导入CXF的内置Bean --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <!-- 服务终端 --> <jaxws:endpoint id="test" implementor="com.thd2000.coccrm.test.webservice.TestDemoImpl" address="/TestDemo" /> <!-- 客户端登录 --> <bean id="memberlogin" class="com.thd2000.coccrm.service.ws.MemberLoginImpl"> <property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property> <property name="tbMembermgtDao" ref="tbMembermgtDao"></property> </bean> <jaxws:endpoint id="memberloginService" implementor="#memberlogin" address="/MemberLogin"/> <!-- 客户端修改密码 --> <bean id="modifypassword" class="com.thd2000.coccrm.service.ws.ModifyMemberPasswordImpl"> <property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property> </bean> <jaxws:endpoint id="modifypasswordService" implementor="#modifypassword" address="/ModifyPassword"/> <!-- 客户端订单信息展现 --> <bean id="memberOrderList" class="com.thd2000.coccrm.service.ws.MemberOrderListImpl"> <property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property> <property name="tbMembermgtDao" ref="tbMembermgtDao"></property> <property name="tbMemberDao" ref="tbMemberDao"></property> <property name="tbOrderDao" ref="tbOrderDao"></property> </bean> <jaxws:endpoint id="memberOrderListService" implementor="#memberOrderList" address="/MemberOrderList"/> </beans>
2服务端接口
package com.thd2000.coccrm.service.ws; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface MemberOrderList { @WebResult(name="String") public String getMemberOrderList(@WebParam(name = "memberuserid")String memberuserid) throws Exception ; } 3 服务端接口实现类 package com.thd2000.coccrm.service.ws; import java.util.Set; import javax.jws.WebService; import com.thd2000.coccrm.dao.tbmember.TbMemberDao; import com.thd2000.coccrm.dao.tbmembermgt.TbMembermgtDao; import com.thd2000.coccrm.dao.tbmemberusers.TbMemberUsersDao; import com.thd2000.coccrm.dao.tborder.TbOrderDao; import com.thd2000.coccrm.model.TbMember; import com.thd2000.coccrm.model.TbMemberUsers; import com.thd2000.coccrm.model.TbMembermgt; import com.thd2000.coccrm.model.TbOrder; import com.thd2000.coccrm.util.DateUtil; @WebService public class MemberOrderListImpl implements MemberOrderList { private TbMemberUsersDao tbMemberUsersDao ; private TbMembermgtDao tbMembermgtDao; private TbMemberDao tbMemberDao; private TbOrderDao tbOrderDao ; public String getMemberOrderList(String memberuserid) throws Exception { //第一步 通过会员用户主键ID获得会员用户对象 TbMemberUsers tbMemberUsers = (TbMemberUsers) tbMemberUsersDao.get(TbMemberUsers.class, memberuserid); //第二步 通过会员用户获得会员主表对象 TbMembermgt tbMembermgt = tbMemberUsers.getTbMembermgt(); //第三步 通过会员主表获得会员明细集合(Set) Set<TbMember> tbMemberSet = tbMembermgt.getTbMemberSet(); //第四步 在会员明细集合中需要获得每个会员对应的订单集合 同时需要重新组装一个订单集合 if (tbMemberSet != null && tbMemberSet.size() > 0) { for (TbMember tbMember : tbMemberSet) { if (tbMember != null) { //遍历会员中的订单集合 Set<TbOrder> tbOrderSet = tbMember.getOrders(); //遍历订单集合中的字段 StringBuilder xmlResult=new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>"); //增加<ORDERS>作为一级根节点,因为< ORDER >可能有多个,程序无法找到根节点 同时使用i 变量区分不同的节点,避免使用for循环 或迭代循环,引发的性能问题 xmlResult.append("<ORDERS>"); int i = 1; for(TbOrder tbOrder :tbOrderSet) { String orderid = tbOrder.getOrderid(); String ordercode = tbOrder.getOrdercode(); String ordername = tbOrder.getOrderName(); String placeorganplace = tbMember.getTsOrganizationplace().getOrganname(); String createdate = DateUtil.format(tbOrder.getCreatedate(), "yyyy-MM-dd"); String ispaymoney = tbOrder.getIspaymoney();//1已缴费0未缴费 xmlResult.append("<ORDER"+ i +">"); xmlResult.append("<Orderid>" + orderid + "</Orderid>"); xmlResult.append("<Ordercode>" + ordercode + "</Ordercode>"); xmlResult.append("<Ordername>" + ordername + "</Ordername>"); xmlResult.append("<Placeorganplace>" + placeorganplace + "</Placeorganplace>"); xmlResult.append("<Createdate>" + createdate + "</Createdate>"); if ("1".equals(ispaymoney)) { xmlResult.append("<Ispaymoney>已缴费</Ispaymoney>"); }else if ("0".equals(ispaymoney)) { xmlResult.append("<Ispaymoney>未缴费</Ispaymoney>"); } xmlResult.append("</ORDER"+ i +">"); i++; } xmlResult.append("</ORDERS>"); return xmlResult.toString(); } } } return "orderlist"; } public TbMemberUsersDao getTbMemberUsersDao() { return tbMemberUsersDao; } public void setTbMemberUsersDao(TbMemberUsersDao tbMemberUsersDao) { this.tbMemberUsersDao = tbMemberUsersDao; } public TbMembermgtDao getTbMembermgtDao() { return tbMembermgtDao; } public void setTbMembermgtDao(TbMembermgtDao tbMembermgtDao) { this.tbMembermgtDao = tbMembermgtDao; } public TbMemberDao getTbMemberDao() { return tbMemberDao; } public void setTbMemberDao(TbMemberDao tbMemberDao) { this.tbMemberDao = tbMemberDao; } public TbOrderDao getTbOrderDao() { return tbOrderDao; } public void setTbOrderDao(TbOrderDao tbOrderDao) { this.tbOrderDao = tbOrderDao; } }
3服务端接口实现类
package com.thd2000.coccrm.service.ws; import java.util.Set; import javax.jws.WebService; import com.thd2000.coccrm.dao.tbmember.TbMemberDao; import com.thd2000.coccrm.dao.tbmembermgt.TbMembermgtDao; import com.thd2000.coccrm.dao.tbmemberusers.TbMemberUsersDao; import com.thd2000.coccrm.dao.tborder.TbOrderDao; import com.thd2000.coccrm.model.TbMember; import com.thd2000.coccrm.model.TbMemberUsers; import com.thd2000.coccrm.model.TbMembermgt; import com.thd2000.coccrm.model.TbOrder; import com.thd2000.coccrm.util.DateUtil; @WebService public class MemberOrderListImpl implements MemberOrderList { private TbMemberUsersDao tbMemberUsersDao ; private TbMembermgtDao tbMembermgtDao; private TbMemberDao tbMemberDao; private TbOrderDao tbOrderDao ; public String getMemberOrderList(String memberuserid) throws Exception { //第一步 通过会员用户主键ID获得会员用户对象 TbMemberUsers tbMemberUsers = (TbMemberUsers) tbMemberUsersDao.get(TbMemberUsers.class, memberuserid); //第二步 通过会员用户获得会员主表对象 TbMembermgt tbMembermgt = tbMemberUsers.getTbMembermgt(); //第三步 通过会员主表获得会员明细集合(Set) Set<TbMember> tbMemberSet = tbMembermgt.getTbMemberSet(); //第四步 在会员明细集合中需要获得每个会员对应的订单集合 同时需要重新组装一个订单集合 if (tbMemberSet != null && tbMemberSet.size() > 0) { for (TbMember tbMember : tbMemberSet) { if (tbMember != null) { //遍历会员中的订单集合 Set<TbOrder> tbOrderSet = tbMember.getOrders(); //遍历订单集合中的字段 StringBuilder xmlResult=new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>"); //增加<ORDERS>作为一级根节点,因为< ORDER >可能有多个,程序无法找到根节点 同时使用i 变量区分不同的节点,避免使用for循环 或迭代循环,引发的性能问题 xmlResult.append("<ORDERS>"); int i = 1; for(TbOrder tbOrder :tbOrderSet) { String orderid = tbOrder.getOrderid(); String ordercode = tbOrder.getOrdercode(); String ordername = tbOrder.getOrderName(); String placeorganplace = tbMember.getTsOrganizationplace().getOrganname(); String createdate = DateUtil.format(tbOrder.getCreatedate(), "yyyy-MM-dd"); String ispaymoney = tbOrder.getIspaymoney();//1已缴费0未缴费 xmlResult.append("<ORDER"+ i +">"); xmlResult.append("<Orderid>" + orderid + "</Orderid>"); xmlResult.append("<Ordercode>" + ordercode + "</Ordercode>"); xmlResult.append("<Ordername>" + ordername + "</Ordername>"); xmlResult.append("<Placeorganplace>" + placeorganplace + "</Placeorganplace>"); xmlResult.append("<Createdate>" + createdate + "</Createdate>"); if ("1".equals(ispaymoney)) { xmlResult.append("<Ispaymoney>已缴费</Ispaymoney>"); }else if ("0".equals(ispaymoney)) { xmlResult.append("<Ispaymoney>未缴费</Ispaymoney>"); } xmlResult.append("</ORDER"+ i +">"); i++; } xmlResult.append("</ORDERS>"); return xmlResult.toString(); } } } return "orderlist"; } public TbMemberUsersDao getTbMemberUsersDao() { return tbMemberUsersDao; } public void setTbMemberUsersDao(TbMemberUsersDao tbMemberUsersDao) { this.tbMemberUsersDao = tbMemberUsersDao; } public TbMembermgtDao getTbMembermgtDao() { return tbMembermgtDao; } public void setTbMembermgtDao(TbMembermgtDao tbMembermgtDao) { this.tbMembermgtDao = tbMembermgtDao; } public TbMemberDao getTbMemberDao() { return tbMemberDao; } public void setTbMemberDao(TbMemberDao tbMemberDao) { this.tbMemberDao = tbMemberDao; } public TbOrderDao getTbOrderDao() { return tbOrderDao; } public void setTbOrderDao(TbOrderDao tbOrderDao) { this.tbOrderDao = tbOrderDao; } }
4.客户端JavaBean (根据所需要的字段重组实体类) 之前还把服务端的JavaBean引到客户端写,完全没必要,客户端根据所需字段重组JavaBean,此时客户端JavaBean就是个临时的JavaBean容器
package com.hzfy.jtjyt.jtwz.pojo; public class TbOrder implements java.io.Serializable { private static final long serialVersionUID = -6312605219384298844L; // Fields /** 订单主键ID */ private String orderid; /** 订单编号 */ private String ordercode; /** 订单名称 */ private String ordername; /** 所属园所 */ private String organplacename; /** 创建日期 */ private String createdate; /** 是否缴费(1已缴费0未缴费) */ private String ispaymoney; public String getOrderid() { return orderid; } public void setOrderid(String orderid) { this.orderid = orderid; } public String getOrdercode() { return ordercode; } public void setOrdercode(String ordercode) { this.ordercode = ordercode; } public String getOrdername() { return ordername; } public void setOrdername(String ordername) { this.ordername = ordername; } public String getOrganplacename() { return organplacename; } public void setOrganplacename(String organplacename) { this.organplacename = organplacename; } public String getCreatedate() { return createdate; } public void setCreatedate(String createdate) { this.createdate = createdate; } public String getIspaymoney() { return ispaymoney; } public void setIspaymoney(String ispaymoney) { this.ispaymoney = ispaymoney; } }
5 客户端Action
public void showOrderList(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception { String forwardPath = ""; String memberuserid = request.getParameter("memberuserid");// //调用Webservice登陆验证 JaxWsDynamicClientFactory dynamicClient = JaxWsDynamicClientFactory.newInstance(); Client client = dynamicClient.createClient("http://localhost:8281/cxf/MemberOrderList?wsdl"); Object[] o = client.invoke("getMemberOrderList", new Object[]{memberuserid}); ArrayList<Object> list=new ArrayList(); if(!"orderlist".equalsIgnoreCase(o[0].toString())){ Document document = DocumentHelper.parseText(o[0].toString());//将string转成xml Element root = document.getRootElement(); //获取文档的根元素 //定义个保存输出xml数据的缓冲字符串对象 StringBuffer sb = new StringBuffer(); sb.append(o[0].toString() + "\n"); //遍历当前元素(在此是根元素)的子元素 for (Iterator i_pe = root.elementIterator(); i_pe.hasNext();) { Element e_pe = (Element) i_pe.next(); //获取当前元素的名字 String orderid = e_pe.elementTextTrim("Orderid"); String ordercode = e_pe.elementTextTrim("Ordercode"); String ordername = e_pe.elementTextTrim("Ordername"); String placeorganplace = e_pe.elementTextTrim("Placeorganplace"); String createdate = e_pe.elementTextTrim("Createdate"); String ispaymoney = e_pe.elementTextTrim("Ispaymoney"); TbOrder order = new TbOrder(); order.setOrderid(orderid); order.setOrdercode(ordercode); order.setOrdername(ordername); order.setOrganplacename(placeorganplace); order.setCreatedate(createdate); order.setIspaymoney(ispaymoney); list.add(order); } request.setAttribute("list", list); forwardPath = "/jtwz/jtwz_wzsj/coccrm/orderlist.jsp"; request.getRequestDispatcher(forwardPath).forward(request, response); return ; }else{ forwardPath = "/jtwz/jtwz_wzsj/coccrm/message/list_tishi.jsp"; request.getRequestDispatcher(forwardPath).forward(request, response); return; } }
相关推荐
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
### CXF 开发 WebService 服务端详解 #### 一、引言 随着企业级应用对服务化的不断追求,Web Service 成为了实现不同系统间通信的重要手段之一。Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP...
CXF不仅简化了Web服务的开发,而且允许开发者无缝地在客户端和服务端之间切换,从而实现双向通信。 **1. CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)...
本篇文章将详细讲解如何利用CXF来开发一个Webservice客户端,我们将探讨CXF的核心概念、配置过程以及客户端的创建步骤。 1. **CXF概述** Apache CXF是一个强大的Web服务框架,它支持多种Web服务规范,如SOAP、...
它允许开发者以Java注解或XML方式定义服务接口,并提供了丰富的客户端和服务端工具。 3. **整合过程** - 首先,我们需要在`pom.xml`中添加CXF和SpringBoot的相关依赖。 - 创建一个服务接口,使用JAX-WS注解如`@...
在IT行业中,Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同的应用...使用CXF开发WebService客户端.wmv"会更深入地展示这一过程,提供实际操作的步骤和示例,帮助你更好地理解和掌握这项技术。
【标题】:“CXF开发Web服务端” 在Java世界中,Apache CXF是一个流行的开源框架,用于构建和部署Web服务。它支持多种Web服务规范,包括SOAP、RESTful API以及WS-*扩展。CXF允许开发者以Java SE或Java EE环境轻松...
下面我们将深入探讨"webservice CXF 服务端客户端传递参数的例子demo"。 1. **CXF框架介绍** CXF是一个Java框架,它允许开发者通过简单的API来创建和使用Web服务。CXF支持多种Web服务标准,如WS-I Basic Profile、...
本实例将详细阐述如何利用CXF和Spring来构建Web服务的客户端和服务端。 一、CXF简介 CXF是一个开源的Java框架,专门用于构建和消费Web服务。它支持SOAP、RESTful等多种服务模型,并且可以方便地与Spring框架集成,...
CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,主要用于构建和开发Web服务。它支持多种Web服务标准,如SOAP、RESTful API、WS-*规范等,使得开发者能够轻松地创建服务端和客户端应用...
在服务端开发中,首先,我们需要在Spring配置文件中定义CXF的Servlet,指定其监听的URL和处理的WS-DSL文件。接着,创建一个接口定义Web服务的合同,然后实现这个接口。服务端的实现类可以被Spring管理,利用注解如`@...
开发WebService客户端** - **生成客户端代码**:CXF提供wsdl2java工具,可以从WSDL文件生成客户端所需的Java类和配置。 - **配置客户端**:配置客户端代理,设置服务地址等信息。 - **调用服务**:通过生成的客户端...
总结,Java WebService客户端和服务端生成工具是开发Web服务不可或缺的辅助手段。理解并掌握这些工具的使用,能够大大提高开发效率,使开发者更加专注于业务功能的实现。通过批处理文件修改WSLD路径,可以灵活地适应...
本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的工具和服务接口来创建服务,然后通过客户端调用来验证服务的正确性。 ### 1. CXF简介 CXF是Apache软件基金会的一个项目,它...
三、创建WebService客户端 1. 生成客户端代理类:CXF提供了wsdl2java工具,可以将服务端的WSDL文档转换为Java客户端代码,生成服务代理类和数据模型类。 2. 引入依赖:同样需要引入CXF客户端的相关jar包,如cxf-rt-...
本教程将深入探讨如何使用CXF来实现WebService服务端和客户端,帮助开发者更好地理解和应用这一强大的工具。 一、CXF概述 CXF是一个全方位的Web服务框架,它集成了多种协议和技术,如SOAP、REST、WS-*规范等,提供...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
2. **服务端开发步骤**: - **定义服务接口**:首先,我们需要定义一个Java接口,该接口包含了服务的方法。 - **创建服务实现类**:实现上述接口,编写服务的具体逻辑。 - **创建WSDL文件**:JAX-WS会自动生成...
作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周才解决了所有的错误啊,真的要自己因为不懂乱写乱改的时候遇到的那些莫名其妙的错误,因此对android客户端的好感上升了不止一个Level啊....