註解的方式釋出介面,解析XML及返回
/*獲取通過WebService傳過來的xml,資料校驗通過解析後儲存到資料庫返回一個xml,資料校驗不通過也返回一個XML*/ import java.sql.Date; import java.text.ParseException; import java.text.SimpleDateFormat; import javax.jws.WebMethod; import javax.jws.WebResult; import javax.jws.WebService; import org.apache.commons.lang.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import com.*.user; import com.*.util.api.DtoUtil; import com.neusoft.agileggfw.webservice.internal.cc22.Cc22Service; import com.neusoft.agileggfw.webservice.internal.xml.XMLBandingData; /* * 這裡是通過SpringMVC 整合CXF方式釋出的介面; * serviceName 為介面名; * uploadUserInfo 為實現方法 * * */ @Component @WebService(serviceName = "/testJws", targetNamespace = "www.testJws.gov.cn") public class JwsServiceImpl implements JwsService{ @Autowired private user userdao; @Autowired private XMLBandingData xmlbandingdata; @WebMethod @WebResult(targetNamespace = "www.testJws.gov.cn") @Transactional @Override public String uploadUserInfo(String xmlInput) { //1.解析xmlInput UserDto dto =resolveXml(xmlInput); //2.校驗 String errorMsg=checkIsNotNull(dto); User user=new User(); //插入資料庫中的User表中,此處省略 if(StringUtils.isBlank(errorMsg)){ //DtoUtil是一個複製dto的工具類,此處省略,這一段程式碼主要是儲存解析及校驗後的XML到資料庫中 DtoUtil.copyProperties(dto, user); userdao.save(user); } //4.返回XML return xmlbandingdata.bandingUser(errorMsg); } private String checkIsNotNull(UserDto dto) { String errorMsg=""; if(StringUtils.isBlank(dto.getUsername())){ errorMsg+="使用者名稱不能為空,"; } if(StringUtils.isBlank(dto.getId())){ errorMsg+="編號不能為空,"; } return errorMsg; } private UserDto resolveXml(String xmlInput) { UserDto dto = new UserDto(); try { Document document = DocumentHelper.parseText(xmlInput); Element root = document.getRootElement(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Element USERNAME = root.element("username");//姓名 if(USERNAME!=null){ dto.setUsername(USERNAME.getText()); } Element ID = root.element("id");//個人編號 if(ID!=null){ dto.setId(ID.getText());// } } catch (Exception e) { e.printStackTrace(); } return dto; } } /*介面類*/ import java.text.ParseException; import javax.jws.WebMethod; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.BindingType; import javax.xml.ws.soap.SOAPBinding; /*@WebMethod(operationName = "uploadUserInfo") 為介面向外提供的呼叫方法*/ @WebService(targetNamespace = "www.testJws.gov.cn", name = "testJWS") @BindingType(value = SOAPBinding.SOAP11HTTP_BINDING) public interface JwsService { @WebResult(targetNamespace = "www.testJws.gov.cn", name = "testjavaWbs") @WebMethod(operationName = "uploadUserInfo") String uploadUserInfo(String xmlInput) throws ParseException; } import org.springframework.stereotype.Repository; import com.*.User; import com.*.PlatformDao; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.annotation.Resource; import javax.sql.DataSource; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.criterion.Projection; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.hibernate.internal.CriteriaImpl; import org.hibernate.internal.SessionImpl; import org.hibernate.transform.ResultTransformer; import org.hibernate.transform.Transformers; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.ConnectionCallback; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; public abstract class PlatformDao<T>{ @Resource(name = "sessionFactory") private SessionFactory sessionFactory; @Resource(name = "dataSource") private DataSource dataSource; protected abstract Class<T> getEntityClass(); } public class Cc22Dto{ private String username; private String id; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getId() { return id; } public void setId(String id) { this.id = id; } } /* * 對應的實體和hebinate對映此處省略 * User.java user.hbm.xml 等*/ /*以上通過SpringMVC與cxf整合後釋出,此處略,這裡是在本地tomcat中釋出的*/ /*客戶端呼叫以上介面 * 這裡也是用SpringMVC的方式呼叫,其他方式略 * */ import java.text.ParseException; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.*。JwsService; public class TestClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(JwsService.class); factory.setAddress("http://localhost:8080/services/testJWS?wsdl"); JwsService client = (JwsService) factory.create(); String inputXml="<?xml version='1.0' encoding='UTF-8'?>"+ "<row>"+ "<getType>testJWS</getType>"+ "<username>username</username>"+ "<id>8888</id>"+ "</row>"; try { client.uploadUserInfo(inputXml); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.sql.Blob; import java.sql.Date; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.List; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.springframework.stereotype.Service; @Service public class XMLBandingData { public String bandingUser(String errorMsg) { Document document = DocumentHelper.createDocument(); Element results = document.addElement("results"); Element WEBNAME = results.addElement("WEBNAME"); //介面名稱 WEBNAME.addText("testJWS"); Element lastTime = results.addElement("lastTime"); //返回時間 lastTime.addText(DateUtil.getDate().toString()); Element state = results.addElement("state"); //狀態:1--成功 0--失敗 if(StringUtils.isBlank(errorMsg)){ state.addText("1"); }else{ state.addText("0"); } Element errorMsg1 = results.addElement("errorMsg"); //錯誤資訊 errorMsg1.addText(errorMsg); StringWriter sw = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(sw, format); try { writer.write(document); } catch (IOException e) { e.printStackTrace(); } return sw.toString(); } }
<!-- 入參 -->
<?xml version="1.0" encoding="UTF-8"?>
<row>
<getType>testJWS</getType> //介面名稱
<username>username</username>
<id>8888</id> //
……
……
</row>
<!--出參 --> <?xml version="1.0" encoding="UTF-8"?> <results> <webName> testJWS</webName > //介面名稱 <lastUpdate>2015-04-09 17:23:59</lastUpdate> //返回時間 <state>1</state> //狀態 <errorMsg></errorMsg> //錯誤資訊 </results>
以上主要描述釋出介面對接收到的XML處理方法及返回xml.
相關推薦
註解的方式釋出介面,解析XML及返回
/*獲取通過WebService傳過來的xml,資料校驗通過解析後儲存到資料庫返回一個xml,資料校驗不通過也返回一個XML*/ import java.sql.Date; import java.text.ParseException; import java.text
Python中使用SAX解析XML及例項
在學習廖雪峰老師的Python教程時,學到了難以理解的關於SAX解析XML這一節。本文將從此節出發,逐句的分析此節的作業。其中作業來源於網友評論。 SAX解析XML速度快、佔用記憶體小。我們只需要關注三個事件:start_element、end_element
Android中三種常用解析XML的方式(DOM、SAX、PULL)簡介及區別
字符串 lan win name屬性 Coding 空間 toc log fin XML在各種開發中都廣泛應用,Android也不例外。作為承載數據的一個重要角色,如何讀寫XML成為Android開發中一項重要的技能。今天就由我向大家介紹一下在Android平臺下幾種常見的
VB呼叫WebService(直接Post方式)並解析返回的XML
Function TodoTaskBySOAP(postURL As String,host As String, n As Integer,FilterItem() As String,OwnerSSICID() As String ,AppID() As String
Java接收Cordys中webservice介面的返回資料並解析xml獲取相應節點資料
在做專案的過程中,需要用Java呼叫Cordys的webservice介面的返回資料,眾所周知,webservice返回的資料是xml形式的,那麼我們怎樣獲取相關節點下的資料呢? 處理之前返回的資料格式如下: <soap:Envelope xmln
ibatis annotations 註解方式返回剛插入的自增長主鍵ID的值--轉
ice summary use 文件的 per 自動 問答 ner generate 原文地址:http://www.blogs8.cn/posts/WWpt35l mybatis提供了註解方式編寫sql,省去了配置並編寫xml mapper文件的麻煩,今天遇到了獲取自增
網絡相關系列之四:數據解析之SAX方式解析XML數據
request nco nodename 新建 作用 call 其他 auto 文件內容 一、XML和Json數據的引入: 通常情況下。每一個須要訪問網絡的應用程序都會有一個自己的server。我們能夠向server提交數據,也能夠從server獲取數據。
pULL方式解析XML的問題
解析xml and google pull hao123 XML 問題 .com music %E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGOOGLEaNDROID http://music.baidu.com/songlist/4956263
spring AOP解析之註解方式詳解
parser 分享 pro asp mes aop log space spec 命名空間處理器是AopNamespaceHandler,我們可以看到這裏註冊了幾個解析器,第一個我們知道是xml形式的解析,接下來我們看AspectJAutoProxyBeanDefiniti
post方式發送和解析xml
httpclient post xml public void etcauthorize(String authCode, String clientState) { logger.info("CMCasController- etcauthorize start... "); V
SpirngMVC AOP 用註解方式配置切面及IllegalArgumentException: error at ::0 formal unbound in pointcut 異常分析
ppi point exc sig 配方 mea oca 代碼 ger MEAVN代碼 <!-- springAOP核心包 --> <dependency> <groupId>org.springframework<
SSH註解方式與XML配置方式對照表
png img XML struts ima hiberna str inf 圖片 一、Hibernate 1、一對多註解 2、單表註解 二、Struts2 Struts2註解 三、Spring 1、IOC註解 2、AOP註解 SSH註解方式與XML配置
spring-bean(註解方式-管理及依賴註入)
sca 支持 nbsp 開啟 const tex ng- autowire 作用 Bean管理(註解方式) 1、添加註解的依賴包:Spring-aop.jar 2、配置spring的XML文件的引入(查官方源碼) 3、開啟註解的掃描 <context:compon
Qt中三種解析xml的方式
處理異常 AR ttr omd ostream odin move encoding efault 在下面的隨筆中,我會根據xml的結構,給出Qt中解析這個xml的三種方式的代碼。雖然,這個代碼時通過調用Qt的函數實現的,但是,很多開源的C++解析xml的庫,甚至很多其他語
XML —— DOM方式解析XML
1. DOM 方式解析 XML 原理 基於 DOM(Document Object Model,文件物件模型)解析方式,是把整個 XML 文件載入到記憶體,轉化成 DOM 樹,因此應用程式可以隨機的訪問 DOM 樹的任何資料; 優點:靈活性強,速度快; 缺點:消耗資源比較多;
XML —— SAX方式解析XML
1. SAX 方式解析 XML 原理 SAX 的工作原理簡單地說就是對文件進行順序掃描,當掃描到文件(document)開始與結束、元素(element) 開始與結束等地方時通知事件處理函式,由事件處理函式做相應動作,然後繼續同 樣的掃描,直至文件結束。 優點:相對於DOM方式消耗資源比較少,適
Spring自動裝配Bean——xml方式與註解方式
自動裝配的概念 在Spring使用中,我們在xml配置檔案通過元素或元素的ref屬性向bean注入另外的依賴bean。 如果使用自動裝配(autowiring) ,就可以減少甚至消除配置元素和元素。 設定元素的autowire屬性就可以設定bean的自動裝配模式。自動裝配有5種模式。
深入Callable及Runnable兩個介面 獲取執行緒返回結果
-今天碰到一個需要獲取執行緒返回結果的業務場景,所以瞭解到了Callable介面。 先來看下下面這個例子: public class ThreadTest { public static void main(String[] args) throws Exception {
_044_Android_解析XML的幾種方式的原理與特點:DOM、SAX、PULL
轉自https://blog.csdn.net/tianhouquan/article/details/82467820 ,感謝作者的無私分享。 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。 XML的解析方式有很多,光開源的就有十多種:如Xerces、J
Android 建立與解析XML(五)—— Dom4j方式
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!