Struts实现XML交互

本文探讨了如何在Struts框架中实现XML数据的接收与解析。通过调整配置避免Struts自动填充表单数据,利用servlet直接读取请求中的XML内容,并使用DOM4J进行解析。

今天需要给系统添加一个解析硬件上送XML的功能,看了些相关的资料。有些帖子则说Struts没办法进行MXL交互。因此自己先做了测试,编写一个servlet:

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException...{
charbuff[]=newchar[2048];

//System.out.println("xmlis:"+request.getParameter("xmlText"));
//System.out.println("xmlis:"+request.getAttribute("xmlText"));

BufferedReaderbufferedReader
=request.getReader();
bufferedReader.reset();
bufferedReader.read(buff);
System.out.println(
"Datais: "+newString(buff));
}



如果去掉注释的两行的话,则读取的XML就行,反之不成。因此结论是如果取得了request的数据,那么就无法读取到请求的XML串。因此解决方式,将struts与form相关的配置省略,让struts不填充fromBean。例如:

<!--数据上送接口-->
<actionpath="/centigrade/saveRealTimeSensorData"
type
="com.aherp.wtrs.app.action.BusinessAction"
scope
="request">
<forwardname="success"path="/pages/common/blank.jsp"/>
</action>


此处action没有写name属性。那么struts也就不用去生成form填充了,那么也就不会去request.getParameter了。因此,在对应的action里:

BufferedReaderbufferedReader=request.getReader();
StringBufferstringBuffer
=newStringBuffer("");

StringlineDatas
=bufferedReader.readLine();
while(lineDatas!=null)...{
stringBuffer.append(lineDatas);
lineDatas
=bufferedReader.readLine();
}


Documentdocument
=DocumentHelper.parseText(stringBuffer.toString());
System.out.println(document.getRootElement().element(
"imei").getText());
System.out.println(document.getRootElement().element(
"temperature").getText());



也就拿到了对应的数据。也能够正常处理了。

更多思考:
如果要使用request.getReader话,那么request.getParameter也便无法读取数据。因此如果是页面要post表单对象和XML数据,那么就必须把XML数据放到表单对象里发送再进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值