ajax、Struts、spring的无缝结合
文章作者 100test 发表时间 2007:03:14 16:37:16
来源 100Test.Com百考试题网
zhipingch 原创
去年初,正好负责一个医药信息系统的设计开发,架构设计时,采用Struts JDBC(自定义采用适配器模式封装了HashMap动态VO实现的持久层)。后来ajax热潮兴起,正好系统中有很多地方需要和服务器端交互数据,如采购销售系统中的订单头/订单明细等主从表结构的维护。
[color=blue]数据交互过程[/color],我们考虑采用xml来组织数据结构,更新/保存:前台封装需要的xml,通过ajax提交---〉action解析xml ---〉改造原有的持久层实现xml持久化;
查询时:持久层根据实际需要返回xml,document对象,---〉action 处理 --〉前台自己封装js库来解析xml,并刷新部分页面。
ajax:已经有很多方法实现跨浏览器的方式,这里只介绍最简单的方式,同步模式下提交xmlStr给action(*.do)。
-
- /**
- * 将数据同步传递给后台请求url
- * @return 返回xmlhttp 响应的信息
- * @param-url = /web/module/xxx.do?p1=YY&.p2=RR .
- * @param-xmlStr:xml格式的字符串
- * @author zhipingch
- * @date 2005-03-17
- */
- function sendData(urlStr, xmlStr) {
- var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP").
- xmlhttp.open("POST", urlStr, false).
- xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded").
- if (xmlStr) {
- xmlhttp.send(xmlStr).
- } else {
- xmlhttp.send().
- }
- return xmlhttp.responseXml.
- } 来源:www.examda.com
struts中我们扩展了Action,实现了xmlStr转化成document对象(dom4j),并且完善了转发方式。如
[quote]
1.DispatchAction
以一个Controller响应一组动作绝对是Controller界的真理,Struts的DispatchAction同样可以做到这点。