当前位置: 代码迷 >> Java Web开发 >> 求教java分页的url 问题!
  详细解决方案

求教java分页的url 问题!

热度:213   发布时间:2012-04-18 15:37:18.0
求教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));
}


举个例子:(响应链接的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  我也想请教这个分页的问题

----------------解决方案--------------------------------------------------------
  相关解决方案