日期:2014-05-17 浏览次数:20589 次
/**
* 与水晶易表进行交互
* 这个方法你可以看做是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].s