J度空间

struts+ajax

   标准的struts是同步交互的,客户端提交请求到Action,服务端处理后findforward()刷新整个页面,ajax是异步交互,页面通过 xmlHttpRequest提交一个后台线程到服务端,服务端处理后将xml或者html写回客户端,客户端回调函数随即刷新内存中的dom树.
 
   由于ajax不用刷新整个页面,且每次回调函数直接更新内存,所以速度非常快,且客户体验很丰富,比如用ajax可以很容易实现菜单联动(因为它只更新下 级菜单,上一级菜单根本不会受影响,在jsp中意味着不用关心页面刷新时其它表单元素的选择值),另外还有一点ajax是客户端的技术,对struts的 架构不会影响(客户端的提交可以用ajax提交到servlet,也可以沿用struts方式提交到Action中),因此很容易想到将ajax和 Struts结合起来,共用两者的优势.

   用ajax+struts的架构有一些需要注意的问题,这是我在项目中的一些感受,在这里写出来,供各位同仁参考:

   1:设计页面跳转的操作不要用ajax.ajax主要是用于异步交互,所以它是同一个页面的操作,在xmlHttpRequest.open()方法中, "get"方法明确表示是从服务端获取,"post"方法虽然表示提交,但主要用于浏览器url隐藏参数的具体值,在ajax的servlet中用 response.sendRedirect()方法是无效的,原页面会傻等后台servlet的相应.因此MIS系统中的新增,修改等需要到另一个页面 的操作都应该用传统的form.submit()的方式提交页面.

    2:在ajax传参时要特别注意\",\'这些字符,尤其是一个参数中含多个字段的情况,尽量不要用'$','%'等特殊字符来分割.在servlet端 getParameter()的时候会出问题,比如你的参数是param1="dkfjdslf"+form1.text1.value;而你的 text1中的字符串含有\"字符,那\"后面的
就都传不过去了.我们项目中遇到过这种情况,找了很久才发现参数只传了一部分.建议如果参数不全的情况首先检查其中是否有特殊字符.

    3:struts和ajax合用时有时会出现struts刷新整个页面结果把ajax效果覆盖了的情况,比如我们的翻页组件是会提交整个表单到原页面,这 时如果客户做了ajax的其它操作,翻页返回时这些效果就都没有了.我的建议是在页面中用<input type=hidden>元素保留ajax的主要效果,每次ajax回调函数返回时更新该元素,这样即时重新提交了该页面也可以通过 request.getParameter()取到ajax效果元素的值.在我们项目中是把每次的查询sql语句做为hidden元素保存了的,因此每次 翻页后下级表格或者其它表单元素仍可以通过该sql取得.

   4:ajax大部分是js脚本,js脚本的调试比较麻烦,主要的办法就是alert()和iE左下脚的错误提示,一般来说大部分的脚本错误都在语法上,比 如select1.options[1]写成了select1.option[1]什么的,看资料上有IE有Dom Inspector可以查看内存中的dom树结构(在google上搜Internet Explorer developer toolbar),用这些第三方的工具可以帮我们调试ajax

   5:有时候strust在request中setAttribute的东西会跟ajax传的parameter冲突(比如上头提到的sql,在新增操作完 后返回查询页面时,struts会在request.setAttribute("sql",sql), 而原查询页面的下级菜单查询等ajax操作会传以"sql="+sql的方式传参,这样两个sql会冲突,我的建议是 request.getParameter("sql")==null?request.getAttribute("sql"):request.getParameter ("sql"),首先保证本页面的异步操作,再考虑其它页面的跳转操作.

   好了,暂且写这些吧,其中有些可能各位高人看起来是废话,那请毫不留情的斧正!在此祝各位同仁中秋国庆愉快,祝和我一样国庆加班的同事们身体健康,万事如意.

posted on 2007-08-13 10:24 蓝色幽默 阅读(1561) 评论(0)  编辑  收藏 所属分类: Struts


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

<2025年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

统计

常用链接

留言簿(4)

随笔分类

文章分类

相册

搜索

最新评论