最近做公司网站,首页部分需要加载动态的新闻数据,当然直接访问这个页面是没有数据的,必须是先访问action
可以用两种方法
1,新建一个welcome.jsp页面,这个页面只是做一个action的跳转,不涉及网站的东西
<%
response.sendRedirect(request.getContextPath()+"/news/showNews");%>然后在web.xml中配置一下,访问项目第一个跳转的页面
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file> </welcome-file-list>最后在struts.xml 中把action请求的的地址返回到首页
<result name="success">/index.jsp</result>
2.用ajax的方法请求
先引用ajax的js文件
function send_request(callback, urladdress, isReturnData){ var xmlhttp = getXMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState == 4) {//readystate 为4即数据传输结束 try{ if(xmlhttp.status == 200){ if(isReturnData && isReturnData==true){ callback(xmlhttp.responseText); } }else{ callback("抱歉,没找到此页面:"+ urladdress +""); } } catch(e){ callback("抱歉,发送请求失败,请重试 " + e); } } } xmlhttp.open("GET", urladdress, true); xmlhttp.send(null);}function getXMLHttpRequest() { var xmlhttp; if (window.XMLHttpRequest) { try { xmlhttp = new XMLHttpRequest(); xmlhttp.overrideMimeType("text/html;charset=UTF-8");//设定以UTF-8编码识别数据 } catch (e) {} } else if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHttp"); } catch (e) { try { xmlhttp = new ActiveXObject("Msxml3.XMLHttp"); } catch (e) {} } } } return xmlhttp;}
然后在index.jsp中写js
function getNews(){ var news = document.getElementById("news"); if(news){ news.innerHTML = "正在请求数据……"; send_request(function(value){ news.innerHTML = value; },"news/showNews",true ); }}
在index.jsp页面里在需要显示数据的地方写一个div显示数据
<div id="news" >
</div>
在新建一个newValue.jsp接收ajax请求方法后的返回数据(也就是js中的news/showNews)
在页面加载的时候调用<body οnlοad="getNews();">,这样前面页面的写完了。
接着配置struts.xml,把result配置到newValue.jsp页面
<action name="showNews" class="com.hooypay.action.ShowNewsAction" method="showNews" >
<result name="success">/news_common.jsp</result> <result name="index">/newsValue.jsp</result> </action>这样就ok了