使用webservice中使用的类型可以是好多种,string、element、document等等甚至可以使对象!
我使用element来传输xml文件,写了一个文件,源码如下
import java.io.Reader;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
/**
- 工单查询接口 boos提供serialNumber、serviceNum输入参数
* - @author joypen
/
public class WidebandBusinessQueryService {
// 提供的查询方法
public Element queryWideband(Element requestXml) throws Exception {
}Map map = this.databaseMethod(requestXml); String responseXml = this.dealResponseXml(map); System.out.println("111 "+responseXml); Document doc = null; Reader strreader=new StringReader(responseXml); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = builder.parse(new InputSource(strreader)); return doc.getDocumentElement();
// 连接数据库,并且执行sql语句
private Map databaseMethod(Element requestXml) {
}Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; Map map = null; String serialNumber = null; String serviceNum = null; try { map = this.parseXml(requestXml); serialNumber = (String) map.get("SERIALNUMBER"); serviceNum = (String) map.get("SERVICENUM"); if(TextUtil.isNull(serialNumber) || "".equals(serialNumber) || TextUtil.isNull(serviceNum) || "".equals(serviceNum)){ map.put("ERRORCODE", "1"); map.put("DESCRIPTION", "SERIALNUMBER OR SERVICENUM IS WORING!"); }else{ conn = Helper.getDBCnn(); conn.setAutoCommit(false); String sqlString = this.sqlQueryString(serialNumber, serviceNum); ps = conn.prepareStatement(sqlString); rs = ps.executeQuery(); map = this.dealResult(rs); } } catch (Exception e) { System.out.print("WidebandBusinessQueryService--数据库连接出错!"); e.printStackTrace(); }finally{ try { rs = null; ps = null; if(conn!=null){ conn.setAutoCommit(true); conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return map;
// 拼接sql语句
private String sqlQueryString(String serialNumber, String serviceNum) {
}StringBuffer sql = new StringBuffer(); sql.append("select * from t_pbb_open_main where SERIALNUMBER = +serialNumber+ and SERVICE_NUM = +serviceNum+ "); return sql.toString();
// 处理返回的结果集
private Map dealResult(ResultSet rs) {
}HashMap map = null; try { map = new HashMap(); if(rs.next()){ map.put("ERRORCODE", "0"); map.put("SERIALNUMBER", rs.getString("SERIALNUMBER")); map.put("SERVICENUM", rs.getString("SERVICE_NUM")); map.put("FORMNO", rs.getString("FORM_NO")); map.put("STATE", rs.getString("PROCESS_STATE")); map.put("OPERATORNAME", rs.getString("SERVICE_NUM")); }else{ map.put("ERRORCODE", "1"); map.put("DESCRIPTION", "WITHOUT THIS RECORD!"); } } catch (SQLException e) { e.printStackTrace(); } return map;
// 解析xml,得到serialNumber和serviceNum
private Map parseXml(Element requestXml) throws Exception {
}Map map = new HashMap(); String serialNumber=""; Node tmpNode = XPathAPI.selectSingleNode(requestXml, "//SERIALNUMBER"); if (tmpNode != null) { Node txtNode = tmpNode.getFirstChild(); if (txtNode != null) serialNumber = txtNode.getNodeValue(); } String serviceNum=""; tmpNode = XPathAPI.selectSingleNode(requestXml, "//SERVICENUM"); if (tmpNode != null) { Node txtNode = tmpNode.getFirstChild(); if (txtNode != null) serviceNum = txtNode.getNodeValue(); } map.put("SERIALNUMBER", serialNumber); map.put("SERVICENUM", serviceNum); return map;
// 拼接responseXml
private String dealResponseXml(Map responseMap) {
");String resultCode = (String) (TextUtil.isNull(responseMap.get("ERRORCODE")) ? "" : responseMap.get("ERRORCODE")); String serialNumber = (String) (TextUtil.isNull(responseMap.get("SERIALNUMBER")) ? "" : responseMap.get("SERIALNUMBER")); String serviceNum = (String) (TextUtil.isNull(responseMap.get("SERVICENUM")) ? "" : responseMap.get("SERVICENUM")); String formNo = (String) (TextUtil.isNull(responseMap.get("FORMNO")) ? "" : responseMap.get("FORMNO")); String description = (String) (TextUtil.isNull(responseMap.get("DESCRIPTION")) ? "" : responseMap.get("DESCRIPTION")); String time = (String) (TextUtil.isNull(responseMap.get("time")) ? "" : responseMap.get("time")); String state = (String) (TextUtil.isNull(responseMap.get("STATE")) ? "" : responseMap.get("STATE")); String operatorName = (String) (TextUtil.isNull(responseMap.get("OPERATORNAME")) ? "" : responseMap.get("OPERATORNAME")); String operatorPhone = (String) (TextUtil.isNull(responseMap.get("OPERATORPHONE")) ? "" : responseMap.get("OPERATORPHONE")); StringBuffer sb = new StringBuffer(); sb.append("
");sb.append("
");sb.append(""+resultCode+"
");sb.append(""+serialNumber+"
");sb.append(""+serviceNum+"
");sb.append(""+formNo+"
");sb.append("响应时间
");sb.append("失败原因
");sb.append("
");sb.append("当前环节
");sb.append("操作人姓名
");sb.append("操作人电话
");sb.append("
");sb.append("
}return sb.toString();
public static void main(String[] args) throws Exception {
}String reqeustXml = "321312陶宏辉请求时间"; Document doc = null; Reader strreader=new StringReader(reqeustXml); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = builder.parse(new InputSource(strreader)); Element responseXml = new WidebandBusinessQueryService().queryWideband(doc.getDocumentElement()); String testXml = ""; Node tempNode = XPathAPI.selectSingleNode(responseXml, "//OPERATORNAME"); if(tempNode!=null){ Node txtNode = tempNode.getFirstChild(); if(txtNode!=null){ testXml = txtNode.getTextContent(); } } System.out.println("reqeust: "+reqeustXml); System.out.println("testXml: "+testXml);
}