日期:2014-05-18 浏览次数:20601 次
/** * 与水晶易表进行交互 * 这个方法你可以看做是servlet的doPost方法。 */ public void getXcelsiusData(HttpServletRequest request, HttpServletResponse response, IErrorHandler errorHandler, IMessageHandler messageHandler, ViewHelper viewHelper) throws IOException, LiteJdbcException { // 接收水晶易表数据: // 这些数据一般作为参数用,当然也可以看做表单(flash表单,酷吧)提交。 // 水晶易表发送过来的数据是xml格式的,我没有想到更好的办法获取这些数据, // 而是把它们当做字符串来处理的,它的层次结构是data/variable/row/column // 大概是这段字符串后面是个等于号,这样竟把后面的所有的内容取了出来 String strData = request.getParameter("<data><variable name"); // 我打算把易表传过来的数据放到map里面,格式为<String,String[]>, // key存放variable的名称,value存放这个variable里面包含的column Map map = new HashMap(); // 根据这段xml字符串的格式特征,我对它进行了解剖,把有用的数据放到了map里面。 // 正式因为易表传过来的xml格式是固定的我才能这样做。 String[] strVariables = strData.split("<variable name="); for (int i = 0; i < strVariables.length; i++) { // 取variable值 int pos1 = strVariables[i].indexOf("\">"); String var = strVariables[i].substring(1, pos1); // 取column值 String[] strColumns = strVariables[i].split("</column>"); String[] cols = new String[strColumns.length - 1]; for (int j = 0; j < strColumns.length - 1; j++) { int pos2 = strColumns[j].indexOf("<column>"); cols[j] = strColumns[j].substring(pos2 + "<column>".length()); } map.put(var, cols); } // 下面把数据取出来打印一下看看 System.out.println("variable共有" + map.size() + "个,分别是:"); Iterator it = map.keySet().iterator(); while (it.hasNext()) { String key = (String) it.next(); String[] values = (String[]) map.get(key); System.out.print(key + " = "); for (int i = 0; i < values.length; i++) { System.out.print(i == values.length - 1 ? values[i] : values[i] + ","); } System.out.println(); } // 数据就接收完了,根据你的需要,可以把它们存到数据库,或者用在下面作为查询数据库的参数 // ------- // 给水晶易表发送数据: // 这里就是组成一个xml格式的字符串,里面的数据就随便你从哪取了。 // 我这里为了方便使用静态的数据,查数据库我想大家都会我就不献丑了。 StringBuffer xml = new StringBuffer(); xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); xml.append("<data>"); xml.append("<variable name=\"aa\">"); xml.append("<row>"); xml.append("<column>").append("lo").append("</column>"); xml.append("<column>").append("da").append("</column>"); xml.append("<column>").append("chi").append("</column>"); xml.append("</row>"); xml.append("</variable>"); xml.append("</data>"); // 把这段字符串打印在页面上,那么这个页面就是xml格式的了。 response.getWriter().println(xml); }