在SSH框架下实现jsp页面的局部刷新(ajax)

来源:互联网 发布:牛顿插值算法matlab 编辑:程序博客网 时间:2024/06/05 18:41

在SSH框架下实现jsp页面的局部刷新(ajax)


第一种方法:

jsp中代码为

<a onclick="loadXMLDoc('ajax/my.jsp')"></a>

对应的js:

<script type="text/javascript">var xmlhttp;    function loadXMLDoc(url)    {xmlhttp=null;if (window.XMLHttpRequest)  {// code for Firefox, Opera, IE7, etc.  xmlhttp=new XMLHttpRequest();  }else if (window.ActiveXObject)  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }if (xmlhttp!=null)  {  xmlhttp.onreadystatechange=state_Change;  xmlhttp.open("POST",url,true);  xmlhttp.send(null);  }else  {  alert("Your browser does not support XMLHTTP.");  }}function state_Change(){if (xmlhttp.readyState==4)  {// 4 = "loaded"  if (xmlhttp.status==200)    {// 200 = "OK"    document.getElementById("diff").innerHTML=xmlhttp.responseText;    }  else    {    alert("Problem retrieving data:" + xmlhttp.statusText);    }  }}</script>

my.jsp是点击a标签后,id为diff的div所要异步刷新的内容。

第二种方法:使用SSH框架所支持的Ajax方式,即dojo,DWR等框架。

jsp代码为

<sx:a href="ajaxAction?address=regression" targets="diff" executeScripts="true">

对应的ajaxaction需要在struts配置对应的action位置和result。

<action name="ajaxAction" class="com.sdu.action.ajaxAction"><result name="regression">/ajax/Regression.jsp</result></action>

对应的ajaxaction则需要继承actionsupport,完成execute()方法的重写

public String execute(){    if(address.equals("regression"))        return "regression";}

方法比较:

因为dojo框架更加适合ssh框架下web的开发。sx:a,sx:div和sx:submit为最为常见的sx标签。在个人实现过程中因为有些jsp中包含了js文件,而调用第一种方法无法实现,而sx:a标签中有一个executeScripts属性,意思为是否执行返回内容中的js代码,可以顺利实现。所以个人更倾向于第二种已有的针对ssh框架的ajax实现方式。

原创粉丝点击