读书人

struts-jquery-ajax高效率分页(mysql版

发布时间: 2012-08-30 09:55:54 作者: rapoo

struts-jquery-ajax高效分页(mysql版)
本文是struts2+jquery-ajax实现的在mySQL下的高效分页
1:先看下预览效果:(30多万数据测试)


2:这个实现首先把后台数据库返回的RowSet转化成json格式的字符串,再把这个json格式的字符串传给前台,用jquery解析
RowSet数据到json格式的数据转化函数如下:

/*      * @param count 数据总条目数      * @param pageCount 每页显示数据数      * */     private static String RowSetToJson(RowSet rt,int count,int pageCount){     ResultSetMetaData rm=null;     StringBuilder sb=new StringBuilder();     try { rm=rt.getMetaData(); sb.append("{\"pageCount\":\""+count+"\",\"pageData\":["); int columNum=rm.getColumnCount(); List<String> list=new ArrayList<String>(); for(int i=0;i<columNum;i++){ list.add(rm.getColumnName(i+1)); }  for(int i=0;i<pageCount&&rt.next();i++){ sb.append("{"); for(int j=0;j<list.size();j++){ if(j!=list.size()-1){ sb.append("\""+list.get(j)+"\":\""+rt.getString(list.get(j))+"\","); }else{ sb.append("\""+list.get(j)+"\":\""+rt.getString(list.get(j))+"\""); } } if(i!=pageCount-1){ sb.append("},"); }else{ sb.append("}"); }  } sb.append("]}");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}     return sb.toString();     }

调用转化函数方法:
 public static String getJson(String tableName,String select,String where,String orderby,int pageIndex,int pageCount){         StringBuilder sb=new StringBuilder();         sb.append("select "+select+" from "+tableName);         if(!"".equals(where)){         sb.append(" ");         if(where.startsWith("where")){         sb.append(" "+where);         }else{         sb.append(" where "+where);         }         }         sb.append(" "+orderby+" ");         int temp=(pageIndex-1)*pageCount;         sb.append(" limit "+temp+","+pageCount);     RowSet rt=DBop.search(sb.toString());     //求数据总条目数         int rowNum=0;         rowNum=DBop.getNum(tableName,where);     return RowSetToJson(rt,rowNum,pageCount);     }


3:在action函数里调用方法:
import com.jiang.DB.GetData;import com.opensymphony.xwork2.ActionSupport;public class GetPageData extends ActionSupport {private String p;//当前页private String orderby;//排序规则private String data;     public String getData() {return data;}public void setData(String data) {this.data = data;}public String getP() {return p;}public void setP(String p) {this.p = p;}public String getOrderby() {return orderby;}public void setOrderby(String orderby) {this.orderby = orderby;}public String execute()throws Exception{     if("".equals(orderby)){     orderby="order by id_t";     }     if("".equals(p)){     p=String.valueOf(1);     }     if(Integer.parseInt(p)==0){     p=String.valueOf(1);     }     data=GetData.getJson("pagetest", "*", "","order by id_t", Integer.parseInt(p), 10);//     System.out.println(data);     return SUCCESS;     }}
]

4:页面ajax请求代码:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>jquery-ajax分页</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><script src="js/jquery-1.2.6.pack.js" type="text/javascript"></script><script src="js/jquery.js" type="text/javascript"></script><script src="js/jquery.pagination.js" type="text/javascript"></script><link href="js/pagination.css" rel="stylesheet" type="text/css" /><script type="text/javascript">   var orderby="order by id_t";   $(document).ready(function(){   initData(0);   });       //翻页响应   function pageselectCallback(page_id,jq) {           initData(page_id);       }   function initData(pageindx)       {          var tbody="";          var pageCount="";         $.ajax({              type: "POST",//用POST方式传输              dataType:"json",//数据格式:JSON              url:'getData.action',//目标地址              async:false,//作用是防止在ajax成功调用之前就调用$("#Pagination").pagination,这个时候数据个数还没有初始化              data:"p="+(pageindx+1)+"&orderby="+escape(orderby),              beforeSend:function(){$("#divload").show();$("#Pagination").hide();},//发送数据之前              complete:function(){$("#divload").hide();$("#Pagination").show();},//接收数据完毕              success:function(json) {                       $("#productTable tr:gt(0)").remove();                       var productData = json.pageData;                       pageCount=json.pageCount;                       if(productData==""){                          $("#divload").hide();                          dis();                          return false;                       }                       $.each(productData, function(i, n) {                           var trs = "";                           trs += "<tr><td align='center'>" + n.id_t + "</td><td align='center'>"+n.name_t+"</td><td align='center'>"+n.reamark_t+"</td><td align='center'>"+n.age_t+"</td><td align='center'>"+n.hobby_t+"</td><td align='center'><a href=\"javascript:edit('')\">编辑</a>  <a href=\"javascript:view('')\">查看</a></td></tr>";                        tbody+=trs;                        });                         $("#productTable").append(tbody);                        //行交替颜色                         $("#productTable tr:gt(0):odd").attr("class", "");                         $("#productTable tr:gt(0):even").attr("class", "");                       }//end of success               });              if(pageCount!=0){                  $("#Pagination").pagination(pageCount, {                   callback: pageselectCallback,                   prev_text: '<< 上一页',                   next_text: '下一页 >>',                   items_per_page:10,            num_display_entries:6,            current_page:pageindx,            num_edge_entries:2               });              }      }//排序   function Sort(ordercolumn,ordertipid){       var ordertype="";//1:desc,0:asc       var $orderimg = $("#"+ordertipid);       if($orderimg.html()!="")       {            var imgsrc="";            imgsrc = $("img",$orderimg).attr("src");            if(imgsrc.indexOf("asc")>-1){                 $(".ordertip").empty();                 $orderimg.html(" <img src=\"images/sort_desc.gif\" align=\"absmiddle\">");                            ordertype = 1;            }           else           {               $(".ordertip").empty();               $orderimg.html(" <img src=\"images/sort_asc.gif\" align=\"absmiddle\">");                             ordertype = 0;           }       }       else       {            $(".ordertip").empty();            $orderimg.html(" <img src=\"images/sort_desc.gif\" align=\"absmiddle\">");               ordertype = 1;        }              orderby = ordercolumn+"_"+ordertype;       initData(0);          }</script>  </head>    <body>    <div id="divload" style="top:50%; right:50%;position:absolute; padding:0px; margin:0px; z-index:999"></div>    <table id="productTable" style="width:70%" onclick="Sort('id_t','id_t');return false;">id</a><span id="id_t" align="absmiddle"></span></th>             <th nowrap align="middle"><a style="cursor:pointer;" onclick="Sort('name_t','name_t');return false;">name</a><span id="name_t" align="absmiddle"></span></th>             <th nowrap align="middle"><a style="cursor:pointer;" onclick="Sort('remark_t','remark_t');return false;">remark</a><span id="remark_t" align="absmiddle"></span></th>             <th nowrap align="middle"><a style="cursor:pointer;" onclick="Sort('age_t','age_t');return false;">age</a><span id="age_t" align="absmiddle"></span></th>             <th nowrap align="middle"><a style="cursor:pointer;" onclick="Sort('hobby_t','hobby_t');return false;">hobby</a><span id="hobby_t" align="absmiddle"></span></th>             <th nowrap align="middle"><a style="cursor:pointer;">操作</a><span id="Span8" align="absmiddle"></span></th>          </tr>     </table>        <div id="Pagination" style="text-align:left"></div>  </body></html>


5:struts.xml代码:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>  <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />        <package name="default" namespace="/" extends="struts-default">        <default-action-ref name="index" />        <action name="getData" class="com.jiang.action.GetPageData">            <result name="success">/pageData.jsp</result>        </action>    </package></struts>    


6:原代码下载:
1 楼 samng508 2011-07-26 哪里体现出高效这两个字???

读书人网 >Ajax

热点推荐