最近做公司网站,首页部分需要加载动态的新闻数据,当然直接访问这个页面是没有数据的,必须是先访问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了