求教java分页的url 问题!
做查询分页的时候 查询条件很多,点击查询后,条件就在url上不显示了!!求解,求方法 搜索更多相关主题的帖子:
查询 java
----------------解决方案--------------------------------------------------------
查询的条件应该随URL再传回来的。
方法1:在每个分页的链接上,都加上条件的串
方法2:分页的链接实际是改变了URL中页号,用JS改变URL中的页号,再访问此URL
----------------解决方案--------------------------------------------------------
回复 2楼 smallmoon521
用url怎么改变? 能不能写一段代码,让我看下! ----------------解决方案--------------------------------------------------------
我想你的问题是如何在某搜索结果中换页是吧?
比如:
程序代码:
index.jsp?uid=10&tid=20&keyword=myjava&pageNum=1
实际下一页的URL应该是
程序代码:
index.jsp?uid=10&tid=20&keyword=myjava&pageNum=2
上面提到的,第一种方法就是把这个链接直接写到 第二页链接的href属性中
第二种方法:
页面参数
程序代码:
uid=10&tid=20&keyword=myjava&pageNum=1
可以从request中取得,做为一个JS变量. 用JS代码把pageNum改成2,再window.location.href=这个串 就可以了
实际上我就是用的这种方法,不知道其他网站是否也这样用,不知道套路是不是有点野.
但好外是显然的,分页代码可以重用.
程序代码:
/**set value to request query string
*value will encode in this func
*/
function SetValueToRQS(RQS,name,value) {
if(RQS==null)
return RQS;
var index = RQS.indexOf("&"+name+"=");
if(index==-1) {
index = RQS.indexOf(name+"=");
//filter the wrong find PS:uid=2; id=2 is a wrong find
if(index>0) index=-1;
}
//if not found, add one
if(index==-1)
return RQS.replace("#", "")+"&"+name+"="+MyURLencoder(value);;
var bIndex = RQS.indexOf("=",index);
var eIndex = RQS.indexOf("&",index+1);
if(eIndex==-1)
eIndex = RQS.length;
var bStr = RQS.substring(0,bIndex+1);
var eStr = RQS.substring(eIndex,RQS.length);
RQS = bStr+MyURLencoder(value)+eStr;
return RQS;
}
function MyURLencoder(param) {
if(param==null) return "";
param += "";
var myCode = "BKURLCODE";
param = param.replace(/\+/g,myCode);
return encodeURI(encodeURI(param));
}
*value will encode in this func
*/
function SetValueToRQS(RQS,name,value) {
if(RQS==null)
return RQS;
var index = RQS.indexOf("&"+name+"=");
if(index==-1) {
index = RQS.indexOf(name+"=");
//filter the wrong find PS:uid=2; id=2 is a wrong find
if(index>0) index=-1;
}
//if not found, add one
if(index==-1)
return RQS.replace("#", "")+"&"+name+"="+MyURLencoder(value);;
var bIndex = RQS.indexOf("=",index);
var eIndex = RQS.indexOf("&",index+1);
if(eIndex==-1)
eIndex = RQS.length;
var bStr = RQS.substring(0,bIndex+1);
var eStr = RQS.substring(eIndex,RQS.length);
RQS = bStr+MyURLencoder(value)+eStr;
return RQS;
}
function MyURLencoder(param) {
if(param==null) return "";
param += "";
var myCode = "BKURLCODE";
param = param.replace(/\+/g,myCode);
return encodeURI(encodeURI(param));
}
举个例子:(响应链接的JS代码)
程序代码:
var link = 'index.jsp?uid=10&tid=20&keyword=myjava&pageNum=1';
link = SetValueToRQS(link,"pageNum",2);
window.location.href = link;
----------------解决方案--------------------------------------------------------
根本一点,Web请求是无状态的.
所以响应什么样的数据,都是通过参数控制的,那么自己控制参数就好喽~
如果你也想这么用的话,这些都给你吧
程序代码:
/**get value from request query string*/
function GetValueFromRQS(RQS,name) {
if(RQS==null)
return ;
var index = RQS.indexOf("&"+name+"=");
if(index==-1) {
index = RQS.indexOf(name+"=");
if(index!=0) return ;
}
if(index==-1)
return ;
var bIndex = RQS.indexOf("=",index);
var eIndex = RQS.indexOf("&",bIndex+1);
if(eIndex==-1)
eIndex = RQS.length;
return RQS.substring(bIndex+1,eIndex);
}
/**remove value from request query string
*/
function RemoveAttributeFromRQS(RQS,name) {
if(RQS==null)
return RQS;
var bIndex = RQS.indexOf("&"+name+"=");
if(bIndex==-1) {
bIndex = RQS.indexOf(name+"=");
if(bIndex!=0) return RQS;
}
if(bIndex==-1)
return RQS;
var eIndex = RQS.indexOf("&",bIndex+1);
if(eIndex==-1)
eIndex = RQS.length;
var bStr = (bIndex==0) ? "" : RQS.substring(0,bIndex);
var eStr = RQS.substring(eIndex,RQS.length);
RQS = bStr+eStr;
if(RQS.indexOf("&")==0)
RQS = RQS.substring(1,RQS.length);
return RQS;
}
/**
*change attribute of request query string
*this func can change attribute's name and value or only the name, decide by the param
*/
function ChangeAttributeOfRQS(RQS,nameOld,nameNew,valueNew) {
if(RQS==null)
return RQS;
//the attribute which name equel nameNew will be remove first
RQS = RemoveAttributeFromRQS(RQS,nameNew);
var bIndex = RQS.indexOf("&"+nameOld+"=");
if(bIndex==-1) {
bIndex = RQS.indexOf(nameOld+"=");
if(bIndex!=0) return RQS;
}
if(bIndex==-1)
return RQS;
var eIndex = 0;
if(typeof valueNew == "undefined") {
eIndex = RQS.indexOf("=",bIndex+1); //only change the name
}
else
eIndex = RQS.indexOf("&",bIndex+1); //change the name and value
if(eIndex==-1)
eIndex = RQS.length;
var bStr = (bIndex==0) ? "" : RQS.substring(0,bIndex);
var eStr = RQS.substring(eIndex,RQS.length);
RQS = bStr+"&"+nameNew;
if(valueNew !== undefined)
RQS += "="+MyURLcoder(valueNew);
RQS += eStr;
if(RQS.indexOf("&")==0)
RQS = RQS.substring(1,RQS.length);
return RQS;
}
----------------解决方案--------------------------------------------------------
回复 5楼 smallmoon521
能不能加我QQ 406795921 我也想请教这个分页的问题----------------解决方案--------------------------------------------------------