SSH實現帶條件查詢分頁功能

一、我們必須先打好框架,這裡不做解釋了。

二,按我的步驟走,那就不會錯,

1,建立一個分頁的JavaBean

packageut.filter;

importjava.util.List;

public classPageBean {

 private List list;// 要返回的某一頁的記錄列表

 private int allRow;// 總記錄數

 private int totalPage;// 總頁數

 private int currentPage;// 當前頁

 private int pageSize;// 每頁記錄數

 

 private boolean isFirstPage;// 是否為第一頁

 private boolean isLastPage;// 是否為最後一頁

 private boolean hasPreviousPage;// 是否有前一頁

 private boolean hasNextPage;// 是否有下一頁

 

 public List getList() {

  return list;

 }

 public void setList(List list) {

  this.list = list;

 }

 public int getAllRow() {

  return allRow;

 }

 public void setAllRow(int allRow) {

  this.allRow = allRow;

 }

 public int getTotalPage() {

  return totalPage;

 }

 public void setTotalPage(int totalPage) {

  this.totalPage = totalPage;

 }

 public int getCurrentPage() {

  return currentPage;

 }

 public void setCurrentPage(int currentPage) {

  this.currentPage = currentPage;

 }

 public int getPageSize() {

  return pageSize;

 }

 public void setPageSize(int pageSize) {

  this.pageSize = pageSize;

 }

 

 /**

  * 以下判斷頁的資訊,只需要getter方法(is方法)即可

  */

 public boolean isFirstPage() {

  return currentPage == 1;// 如是當前頁是第一頁

 }

 

 public boolean isLastPage() {

  return currentPage == totalPage;// 如果當前頁是最後一頁

 }

 

 public boolean isHasPreviousPage() {

  return currentPage != 1;// 只要當前頁不是第一頁

 }

 

 public boolean isHasNextPage() {

  return currentPage != totalPage;// 只要當前不是最後一頁

 }

 

 /**

  * 初始化分頁資訊

  */

 public void init() {

  this.isFirstPage = isFirstPage();

  this.isLastPage = isLastPage();

  this.hasPreviousPage = isHasPreviousPage();

  this.hasNextPage = isHasNextPage();

 }

 

 /***************************************************************************

  *

  * 計算總頁數,靜態方法,供外部直接通過類名呼叫 pageSize 每頁記錄數 allRow 總記錄數

  *

  * @return 總頁數

  */

 public static int counTotalPage(final intpageSize, final int allRow) {

  int totalPage = allRow % pageSize == 0 ?allRow / pageSize : allRow

    / pageSize 1;

  return totalPage;

 }

 

 /***************************************************************************

  *

  * 計算當前頁開始記錄 pageSize 每頁記錄數 currentPage 當前第幾頁

  *

  * @return 當前頁開始記錄號

  */

 public static int countOffset(final intpageSize, final int currentPage) {

  final int offset = pageSize * (currentPage -1);

  return offset;

 }

 

 /***************************************************************************

  *

  * 計算當前頁,若為0或者請求的URl中沒有”?page=”,則用1代替 page傳入的引數(可能為空,即,則返回1)

  *

  * @return 當前頁

  */

 public static int countCurrentPage(int page) {

  final int curPage = (page == 0 ? 1 : page);

  return curPage;

 }

}

 

 

 

2,dao

 

 /**

   * 分頁查詢

   * hql 查詢條件

   * offset 開始記錄

   * length 一次查詢幾條記錄數

   * */

  public List queryForPage(final Stringhql,final int offset,final int lenght);

  /**

   * 查詢所有記錄數,總記錄數

   * **/

  public int getAllRowCount(String hql);

 

 

 

3.daoImpl:

 

 /**

  * 查詢所有記錄數*

  *

  */

 public int getAllRowCount(String hql) {

  returngetHibernateTemplate().find(hql).size();// 總記錄數

 }

 

 /**

  * 分頁查詢

  *

  */

 public List queryForPage(final String hql,final int offset,

   final int lenght) {

  List list =getHibernateTemplate().executeFind(new HibernateCallback() {

 

   public Object doInHibernate(Session session)

     throws HibernateException, SQLException {

    Query query = session.createQuery(hql);

    query.setFirstResult(offset);

    query.setMaxResults(lenght);

    List list = query.list();

    return list;

   }

  });

  return list;

 }

 

 

 

 

 

4,service;

 

/**

   * 分頁查詢

   * currentPage 當前第幾頁

   * pageSize 每頁大小

   * @return 封閉了分頁資訊(包括記錄List)的Bean

   * */

  public PageBean queryForPage(int pageSize,intcurrentPage,String hql);

 

 

 

 

 

5,serviceImpl:

 

 private BSDao bsDao;

 public BSDao getBsDao() {

  return bsDao;

 }

 public void setBsDao(BSDao bsDao) {

  this.bsDao = bsDao;

 }

 /**

   * 分頁查詢 currentPage 當前第幾頁 pageSize 每頁大小

   *

   * @return 封閉了分頁資訊(包括記錄List)的Bean

   * */

  public PageBean queryForPage(int pageSize,int page, String hql) {

   int allRow = bsDao.getAllRowCount(hql);// 總記錄數

   int totalPage =PageBean.counTotalPage(pageSize, allRow);// 總頁數

   final int offset =PageBean.countOffset(pageSize, page);// 當前總頁開始記錄

 

   final int lenght = pageSize;// 每頁記錄數

   final int currentPage =PageBean.countCurrentPage(page);

   List<Joy1active> list =bsDao.queryForPage(hql, offset, lenght);// 每一頁的記錄數

   // 把分頁資訊儲存到Bean中

   PageBean pageBean = new PageBean();

   pageBean.setPageSize(pageSize);

   pageBean.setCurrentPage(currentPage);

   pageBean.setAllRow(allRow);

   pageBean.setTotalPage(totalPage);

   pageBean.setList(list);

   pageBean.init();

   return pageBean;

  }

 

 

 

 

 

6,action:

 

 

 

/**

  * 分頁部分

  */

 private int page=1;// 第幾頁

 private PageBean pageBean; // 包含分佈資訊的bean

 

 public int getPage() {

  return page;

 }

 

 public void setPage(int page) {

  this.page = page;

 }

 

 public PageBean getPageBean() {

  return pageBean;

 }

 

 public void setPageBean(PageBean pageBean) {

  this.pageBean = pageBean;

 }

public StringqueryByPrarmate() {

  HttpServletRequest request =ServletActionContext.getRequest();

  String hql = “”;

  String category = “”;// 專案

  String ctcod = “”;// 城市

  String timers = “”;// 時間

  String likeName = “”;// 模糊查詢

  String sx = “”;// 順序

  /** 根據條件查詢* */

  StringBuffer sb = new StringBuffer(“FROMJoy1matchlist j where 1=1”);

 

  /** * 按專案選擇 ** */

  if(!request.getParameter(“category”).equals(“全部”)

    &&request.getParameter(“category”) != “”) {// 如專案選擇的不事”全部”

   category =request.getParameter(“category”);

   sb.append(” andj.category='”).append(category).append(“‘”);

  }

  /** **按城市選擇**** */

  if(!request.getParameter(“ctcod”).equals(“全部”)

    &&request.getParameter(“ctcod”) != “”) {// 如果城市是選擇的不是”全部”

   ctcod =request.getParameter(“ctcod”);

   sb.append(” and j.ctcod='”).append(ctcod).append(“‘”);

  }

  /** **按時間選擇**** */

  Date date1 = new Date();

 

  SimpleDateFormat from = newSimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

  // 獲取當前時間

  String nowTimer = from.format(date1);

  Calendar ca7 = Calendar.getInstance();

  Calendar ca30 = Calendar.getInstance();

  Calendar ca90 = Calendar.getInstance();

  ca7.add(Calendar.DATE, -7);// 7為增加的天數,可以改變的

  ca30.add(Calendar.DATE, -30);// 30為增加的天數,可以改變的

  ca90.add(Calendar.DATE, -90);// 90為增加的天數,可以改變的

 

  if (request.getParameter(“timers”).equals(“oneWeek”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”一週內”

   date1 = ca7.getTime();

   String Date7 = from.format(date1);

  timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date7).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  } else if(request.getParameter(“timers”).equals(“oneMonery”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”一月”

   date1 = ca30.getTime();

   String Date30 = from.format(date1);

   timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date30).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  } else if(request.getParameter(“timers”).equals(“threeMonery”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”三月內”

   date1 = ca90.getTime();

   String Date90 = from.format(date1);

  timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date90).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  }

  /** **模糊查詢,根據上面任意條件**** */

  if(request.getParameter(“likeName”) != “”) {

   likeName =request.getParameter(“likeName”);

   sb.append(” and j.title like’%”).append(likeName).append(“%'”);

  }

  /** 根據順序查詢* */

  if (request.getParameter(“sx”) !=””

    &&request.getParameter(“sx”).equals(“asc”)) {// 正序

   sx = request.getParameter(“sx”);

   sb.append(” ORDER BY j.logtime”).append(sx);

  } else {// 倒敘

   sb.append(” ORDER BY j.logtimedesc”);

  }

  hql = sb.toString();

 

  // String hql=”FROM Joy1matchlist jWHERE j.asmbr=0 ORDER BY j.logtime

  // DESC”;

 

  try {

   List<Joy1matchlist> hotList =bsService.queryHotBs();

  ActionContext.getContext().getSession().put(“hotList”,hotList);

  } catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

  // 分頁的pageBean,引數pageSize表示每頁顯示記錄數,page為當前頁

  this.pageBean = bsService.queryForPage(5,page, hql);

  request.setAttribute(“category”,category);

  request.setAttribute(“ctcod”,ctcod);

  request.setAttribute(“timers”,timers);

  request.setAttribute(“likeName”,likeName);

  request.setAttribute(“sx”, sx);

  request.setAttribute(“sumPage”,pageBean.getTotalPage());

  return “benye”;

 }

 

 

 

html:

 

<linkrel=”stylesheet” href=”<%=path%>/myjs/bs/game_list.css” type=”text/css”></link>

<scripttype=”text/javascript” src=”<%=path%>/style/jquery-1.4.2.js”></script>

 

<scripttype=”text/javascript”>

 function show_color(){

  var p;

  if(document.getElementById(“page”)!=null &&document.getElementById(“page”)!=””){

    p=document.getElementById(“page”).value;

   }

   if(p!=null || p!=””){

    page=parseInt(p);

   }

   varcategory=”<%=request.getAttribute(“category”)%>”;//專案

   varctcod=”<%=request.getAttribute(“ctcod”)%>”;//城市

   vartimers=”<%=request.getAttribute(“timers”)%>”;//時間

   if(category==”” ||category==”null”) category=”全部”;

   //city

   if(ctcod==”” ||ctcod==”null”) ctcod=”全部”;

   if(ctcod==”010″) ctcod=”北京市”;

   if(ctcod==”021″) ctcod=”上海市”;

   if(ctcod==”020″) ctcod=”廣州市”;

   if(ctcod==”025″) ctcod=”南京市”;

   if(ctcod==”000″) ctcod=”其他”;

   //timer

   if(timers==”” ||timers==”null”) timers=”全部”;

   if(timers==”oneWeek”)timers=”一週內”;

   if(timers==”oneMonery”)timers=”一月內”;

   if(timers==”threeMonery”)timers=”三月內”;

 

   var array_xm = [0, 1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11];

   var array_cs = [0, 1, 2, 3, 4, 5];

   var array_sj = [0, 1, 2, 3];

   for (var index in array_xm) {

   if($(“#xm” index).html()==category){

    $(“#xm” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

   for (var index in array_cs) {

    if($(“#cs” index).html()==ctcod){

    $(“#cs” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

   for (var index in array_sj) {

   if($(“#sj” index).html()==timers){

    $(“#sj” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

  

   varsumPage=”<%=request.getAttribute(“sumPage”)%>”//總記錄數

   var count=sumPage-4;//出現的組數(最後的一組)

   var n=new Array();

   var num5=0;//一組為5個數

   var j=0;//增加次數

   //把長度賦值給陣列

   for(var i=1;i<sumPage;i ){

    n[i]=i;

   }

   j=page-3;

   //page>4時 1,2,3,4,5

   if(sumPage>=5){

     if(page<5){

     //獲取陣列的前5個值

     j=1;

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 j;

     $(“#page_link”).append(“<a href=’javascript:currPage(” (i 1) “)’id=’link_” (i 1) “‘>” link_num “</a>”);

     if($(“#link_1”).html(“NaN”)){

      $(“#link_1”).html(“1”);

      }

     }

    }

    if(page>=5 &&page<sumPage){//page>5時

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 j;

     $(“#page_link”).append(“<ahref=’javascript:currPage(” (i j) “)’id=’link_” (i j) “‘>” link_num “</a>”);

     if($(“#link_” (i j)).html(“NaN”)){

       $(“#link_” (i j)).html(i j);

      }

     }

    }

    if(page==sumPage){//當前頁==總記錄數時

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 count;

     $(“#page_link”).append(“<ahref=’javascript:currPage(” (i count) “)’id=’link_” (i count) “‘>” link_num “</a>”);

      if($(“#link_” (i count)).html(“NaN”)){

      $(“#link_” (i count)).html(i count);

      }

     }

    }

   }else{

    if(sumPage==1){

    $(“#page_link”).append(“<ahref=’javascript:currPage(1)’ id=’link_1′>1</a>”);

      

    }else{

     for(var i=0;i<n.length;i ){

      num5=i 1;

      $(“#page_link”).append(“<ahref=’javascript:currPage(” (i 1) “)’id=’link_” (i 1) “‘>” num5 “</a>”);

      if($(“#link_1”).html(“NaN”)){

       $(“#link_1”).html(“1”);

       }

     }

    }

   }

   for(var i=0;i<sumPage;i ){

    n[i]=i;

   if($(“#link_” (n[i] 1)).html()==page){

    $(“#link_” (n[i] 1)).css(“background-color”,”#FF6600″).css(“color”,”#fff”).css(“border-color”,”#ff6600″).css(“font-weight”,”bold”);

    }

   }

  }

</script>

 

 

</head>

<bodyonload=”show_color()”>

 

<form action=”queryByPrarmate.action”method=”post” name=”myForm” >

<dt>按專案:</dt>

<dd><a  href=”javascript:showFindxm(‘全部’)” id=”xm0″>全部</a><ahref=”javascript:showFindxm(‘足球’)” id=”xm1″>足球</a><a href=”javascript:showFindxm(‘籃球’)” id=”xm2″>籃球</a><a href=”javascript:showFindxm(‘網球’)” id=”xm3″>網球</a><ahref=”javascript:showFindxm(‘羽毛球’)”
id=”xm4″>羽毛球</a><a href=”javascript:showFindxm(‘乒乓球’)” id=”xm5″>乒乓球</a><ahref=”javascript:showFindxm(‘排球’)” id=”xm6″>排球</a><a href=”javascript:showFindxm(‘檯球’)” id=”xm7″>檯球</a><a href=”javascript:showFindxm(‘游泳’)” id=”xm8″>游泳</a><ahref=”javascript:showFindxm(‘田徑’)”
id=”xm9″>田徑</a><a href=”javascript:showFindxm(‘高爾夫’)” id=”xm10″>高爾夫</a><ahref=”javascript:showFindxm(‘其他’)” id=”xm11″>其他</a></dd></dl>

<inputtype=”hidden” id=”category” name=”category”value=”<s:property value=”#request.category” />”/>

<dlstyle=”display:block”>

<dt>按城市:</dt>

<dd><a  href=”javascript:showFindcs(‘全部’)” id=”cs0″>全部</a><ahref=”javascript:showFindcs(‘010’)” id=”cs1″>北京市</a><ahref=”javascript:showFindcs(‘021’)” id=”cs2″>上海市</a><ahref=”javascript:showFindcs(‘020’)” id=”cs3″>廣州市</a><ahref=”javascript:showFindcs(‘025’)”
id=”cs4″>南京市</a><ahref=”javascript:showFindcs(‘000’)” id=”cs5″>其他</a></dd></dl>

<inputtype=”hidden” id=”ctcod” name=”ctcod”value=”<s:property value=”#request.ctcod” />”/>

<dlstyle=”display:block”>

<dt>按時間:</dt>

<dd><a  href=”javascript:showFindsj(‘全部’)” id=”sj0″>全部</a><ahref=”javascript:showFindsj(‘oneWeek’)” id=”sj1″>一週內</a><ahref=”javascript:showFindsj(‘oneMonery’)” id=”sj2″>一月內</a><a href=”javascript:showFindsj(‘threeMonery’)”id=”sj3″>三月內</a></dd></dl>

<inputtype=”hidden” id=”timers” name=”timers”value=”<s:property value=”#request.timers” />”/>

<dlstyle=”display:block”>

<dt>關鍵字:</dt>

<dd><inputname=”likeName” type=”text” id=”likeName”onkeypress= “if(event.keyCode==39)event.keyCode=0;” /><inputclass=”button” name=”” type=”button” value=”篩 選”onclick=”showLike()” /></dd></dl>

</div>

 

 

 

<s:iteratorvalue=”pageBean.list” status=’st’>

<li><divclass=”game_img”><a href=”<%=path%>/bs_queryBsById.action?id=<s:property value=”id”/>&type=0″><img src=”<s:property value=’imgsrc’/>” /></a></div>

<divclass=”related_c”><p><a href=”<%=path%>/bs_queryBsById.action?id=<s:property value=”id” />&type=0″><s:propertyvalue=”title” /></a></p><p>分類:<s:property value=”category”/></p><p>場館:<s:property value=”unname” /></p><p>時間:<s:propertyvalue=”stime.toString().substring(0,stime.toString().length()-5)”/></p><p>優體價:<s:property
value=”utivalue” />元</p><p>原價:<s:property value=”srcvalue”/>元</p></div><ahref=”<%=path %>/bs_queryBsById.action?id=<s:propertyvalue=”id” />&type=0″><spanclass=”button”>立即購買</span></a></li>

</s:iterator>

 

 

<divclass=”page”>

   <input type=”hidden”id=”page” name=”page” value=”<s:propertyvalue=”pageBean.currentPage” />”/>

   <input type=”hidden”id=”sumNum” name=”sumNum” value=”<s:propertyvalue=”pageBean.totalPage” />”/>

<ahref=”javascript:first()”>首頁</a>

<ahref=”javascript:last()”>上一頁</a>

 

 <span id=”page_link”></span>

 

 

<ahref=”javascript:next() “>下一頁</a>

<ahref=”javascript:end()”>尾頁</a>

 共<s:property value=”pageBean.totalPage” />頁

 

 轉到<input id=”goPages” type=”text” />頁<input class=”page_button”   onclick=”goPage(${pageBean.totalPage})” type=”button” value=”確定” /></div>

</form>

 

 

 

 

 

還有段JS,控制的是 上下頁,需要從新建立Js

 

var page=0;

 //直接跳轉到指定頁面

functiongoPage(endPage){

  var reg = /^(?:0|[1-9][0-9]?|100)$/;

 

 if(!reg.test(document.getElementById(“goPages”).value)){

  alert(“頁碼填寫有誤!”);

 document.getElementById(“goPages”).value=””;

 }else if(

 parseInt(document.getElementById(“goPages”).value)>endPage|| document.getElementById(“goPages”).value==0){

  alert(“此頁不存在!”);

 document.getElementById(“goPages”).value=””;

 }else{

  document.getElementById(“page”).value=document.getElementById(“goPages”).value;

  document.myForm.submit();

 }

 

}

 

 

  //下一頁

  function next(){

   varendNum=document.getElementById(“sumNum”).value;

  if(document.getElementById(“page”).value==endNum){

    alert(“已經是尾頁了”);

    return;

   }else{

    page =1;

   document.getElementById(“page”).value=page;

    document.myForm.submit();

   }

  

  }

  //上一頁

  function last(){

  if(document.getElementById(“page”).value==1){

    alert(“已經是首頁了”);

    return;

   }else{

    page-=1;

   document.getElementById(“page”).value=page;

    document.myForm.submit();

   }

  }

  //首頁

  function first(){

   document.getElementById(“page”).value=1;

    document.myForm.submit();

  }

  //尾頁

  function end(){

    var endNum=document.getElementById(“sumNum”).value;

   document.getElementById(“page”).value=endNum;

    document.myForm.submit();

  }

  //每次查出按第一頁顯示

  function showBtn(){

  document.getElementById(“page”).value=1;

  

  }

  //xm

  function showFindxm(xm){

  document.getElementById(“category”).value=xm;

   showBtn();

   document.myForm.submit();

  }

  function showFindcs(cs){

  document.getElementById(“ctcod”).value=cs;

   showBtn();

   document.myForm.submit();

  }

  function showFindsj(sj){

   document.getElementById(“timers”).value=sj;

   showBtn();

   document.myForm.submit();

  }

  //like

  function showLike(){

   varlikeNames=document.getElementById(“likeNames”).value;

   varlikeName=document.getElementById(“likeName”).value;

   if(likeName!=null &&likeName!=””){

    showBtn();  

    document.myForm.submit();

   }else{

   likeNames=document.getElementById(“likeName”).value=likeNames;

    showBtn();

    document.myForm.submit();

   }

  }

  //排序

  function showSx(sx){

  document.getElementById(“sx”).value=sx;

   document.myForm.submit();

  }

 

 //currPage

 function currPage(num){

 document.getElementById(“page”).value=num;

  document.myForm.submit();

 }

 

 

 

 

struts2多條件查詢分頁顯示 – 紫陽 – 江湖人

 

 

struts2多條件查詢分頁顯示 – 紫陽 – 江湖人

 

 

 

好了,到此結束,新手書寫,還望見諒。如有問題即是提出,謝謝!一、我們必須先打好框架,這裡不做解釋了。

 

二,按我的步驟走,那就不會錯,

 

1,建立一個分頁的JavaBean

 

packageut.filter;

 

importjava.util.List;

 

public classPageBean {

 private List list;// 要返回的某一頁的記錄列表

 private int allRow;// 總記錄數

 private int totalPage;// 總頁數

 private int currentPage;// 當前頁

 private int pageSize;// 每頁記錄數

 

 private boolean isFirstPage;// 是否為第一頁

 private boolean isLastPage;// 是否為最後一頁

 private boolean hasPreviousPage;// 是否有前一頁

 private boolean hasNextPage;// 是否有下一頁

 

 public List getList() {

  return list;

 }

 

 public void setList(List list) {

  this.list = list;

 }

 

 public int getAllRow() {

  return allRow;

 }

 

 public void setAllRow(int allRow) {

  this.allRow = allRow;

 }

 

 public int getTotalPage() {

  return totalPage;

 }

 

 public void setTotalPage(int totalPage) {

  this.totalPage = totalPage;

 }

 

 public int getCurrentPage() {

  return currentPage;

 }

 

 public void setCurrentPage(int currentPage) {

  this.currentPage = currentPage;

 }

 

 public int getPageSize() {

  return pageSize;

 }

 

 public void setPageSize(int pageSize) {

  this.pageSize = pageSize;

 }

 

 /**

  * 以下判斷頁的資訊,只需要getter方法(is方法)即可

  */

 public boolean isFirstPage() {

  return currentPage == 1;// 如是當前頁是第一頁

 }

 

 public boolean isLastPage() {

  return currentPage == totalPage;// 如果當前頁是最後一頁

 }

 

 public boolean isHasPreviousPage() {

  return currentPage != 1;// 只要當前頁不是第一頁

 }

 

 public boolean isHasNextPage() {

  return currentPage != totalPage;// 只要當前不是最後一頁

 }

 

 /**

  * 初始化分頁資訊

  */

 public void init() {

  this.isFirstPage = isFirstPage();

  this.isLastPage = isLastPage();

  this.hasPreviousPage = isHasPreviousPage();

  this.hasNextPage = isHasNextPage();

 }

 

 /***************************************************************************

  *

  * 計算總頁數,靜態方法,供外部直接通過類名呼叫 pageSize 每頁記錄數 allRow 總記錄數

  *

  * @return 總頁數

  */

 public static int counTotalPage(final intpageSize, final int allRow) {

  int totalPage = allRow % pageSize == 0 ?allRow / pageSize : allRow

    / pageSize 1;

  return totalPage;

 }

 

 /***************************************************************************

  *

  * 計算當前頁開始記錄 pageSize 每頁記錄數 currentPage 當前第幾頁

  *

  * @return 當前頁開始記錄號

  */

 public static int countOffset(final intpageSize, final int currentPage) {

  final int offset = pageSize * (currentPage -1);

  return offset;

 }

 

 /***************************************************************************

  *

  * 計算當前頁,若為0或者請求的URl中沒有”?page=”,則用1代替 page傳入的引數(可能為空,即,則返回1)

  *

  * @return 當前頁

  */

 public static int countCurrentPage(int page) {

  final int curPage = (page == 0 ? 1 : page);

  return curPage;

 }

}

 

2,dao

 

 /**

   * 分頁查詢

   * hql 查詢條件

   * offset 開始記錄

   * length 一次查詢幾條記錄數

   * */

  public List queryForPage(final Stringhql,final int offset,final int lenght);

  /**

   * 查詢所有記錄數,總記錄數

   * **/

  public int getAllRowCount(String hql);

 

3.daoImpl:

 

 /**

  * 查詢所有記錄數*

  *

  */

 public int getAllRowCount(String hql) {

  returngetHibernateTemplate().find(hql).size();// 總記錄數

 }

 

 /**

  * 分頁查詢

  *

  */

 public List queryForPage(final String hql,final int offset,

   final int lenght) {

  List list =getHibernateTemplate().executeFind(new HibernateCallback() {

 

   public Object doInHibernate(Session session)

     throws HibernateException, SQLException {

    Query query = session.createQuery(hql);

    query.setFirstResult(offset);

    query.setMaxResults(lenght);

    List list = query.list();

    return list;

   }

  });

  return list;

 }

 

4,service;

 

/**

   * 分頁查詢

   * currentPage 當前第幾頁

   * pageSize 每頁大小

   * @return 封閉了分頁資訊(包括記錄List)的Bean

   * */

  public PageBean queryForPage(int pageSize,intcurrentPage,String hql);

 

 

5,serviceImpl:

 

 private BSDao bsDao;

 public BSDao getBsDao() {

  return bsDao;

 }

 public void setBsDao(BSDao bsDao) {

  this.bsDao = bsDao;

 }

 /**

   * 分頁查詢 currentPage 當前第幾頁 pageSize 每頁大小

   *

   * @return 封閉了分頁資訊(包括記錄List)的Bean

   * */

  public PageBean queryForPage(int pageSize,int page, String hql) {

   int allRow = bsDao.getAllRowCount(hql);// 總記錄數

   int totalPage =PageBean.counTotalPage(pageSize, allRow);// 總頁數

   final int offset =PageBean.countOffset(pageSize, page);// 當前總頁開始記錄

 

   final int lenght = pageSize;// 每頁記錄數

   final int currentPage = PageBean.countCurrentPage(page);

   List<Joy1active> list =bsDao.queryForPage(hql, offset, lenght);// 每一頁的記錄數

   // 把分頁資訊儲存到Bean中

   PageBean pageBean = new PageBean();

   pageBean.setPageSize(pageSize);

   pageBean.setCurrentPage(currentPage);

   pageBean.setAllRow(allRow);

   pageBean.setTotalPage(totalPage);

   pageBean.setList(list);

   pageBean.init();

   return pageBean;

  }

 

6,action:

 

/**

  * 分頁部分

  */

 private int page=1;// 第幾頁

 private PageBean pageBean; // 包含分佈資訊的bean

 

 public int getPage() {

  return page;

 }

 

 public void setPage(int page) {

  this.page = page;

 }

 

 public PageBean getPageBean() {

  return pageBean;

 }

 

 public void setPageBean(PageBean pageBean) {

  this.pageBean = pageBean;

 }

public StringqueryByPrarmate() {

  HttpServletRequest request =ServletActionContext.getRequest();

  String hql = “”;

  String category = “”;// 專案

  String ctcod = “”;// 城市

  String timers = “”;// 時間

  String likeName = “”;// 模糊查詢

  String sx = “”;// 順序

  /** 根據條件查詢* */

  StringBuffer sb = new StringBuffer(“FROMJoy1matchlist j where 1=1”);

 

  /** * 按專案選擇 ** */

  if(!request.getParameter(“category”).equals(“全部”)

    &&request.getParameter(“category”) != “”) {// 如專案選擇的不事”全部”

   category =request.getParameter(“category”);

   sb.append(” andj.category='”).append(category).append(“‘”);

  }

  /** **按城市選擇**** */

  if(!request.getParameter(“ctcod”).equals(“全部”)

    &&request.getParameter(“ctcod”) != “”) {// 如果城市是選擇的不是”全部”

   ctcod =request.getParameter(“ctcod”);

   sb.append(” andj.ctcod='”).append(ctcod).append(“‘”);

  }

  /** **按時間選擇**** */

  Date date1 = new Date();

 

  SimpleDateFormat from = newSimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

  // 獲取當前時間

  String nowTimer = from.format(date1);

  Calendar ca7 = Calendar.getInstance();

  Calendar ca30 = Calendar.getInstance();

  Calendar ca90 = Calendar.getInstance();

  ca7.add(Calendar.DATE, -7);// 7為增加的天數,可以改變的

  ca30.add(Calendar.DATE, -30);// 30為增加的天數,可以改變的

  ca90.add(Calendar.DATE, -90);// 90為增加的天數,可以改變的

 

  if(request.getParameter(“timers”).equals(“oneWeek”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”一週內”

   date1 = ca7.getTime();

   String Date7 = from.format(date1);

  timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date7).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  } else if(request.getParameter(“timers”).equals(“oneMonery”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”一月”

   date1 = ca30.getTime();

   String Date30 = from.format(date1);

  timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date30).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  } else if(request.getParameter(“timers”).equals(“threeMonery”)

    &&request.getParameter(“timers”) != “”) {// 如果時間是選擇的是”三月內”

   date1 = ca90.getTime();

   String Date90 = from.format(date1);

  timers=request.getParameter(“timers”);

   sb.append(“and j.stime BETWEEN'”).append(Date90).append(“‘and'”)

     .append(nowTimer).append(“‘”);

  }

  /** **模糊查詢,根據上面任意條件**** */

  if(request.getParameter(“likeName”) != “”) {

   likeName =request.getParameter(“likeName”);

   sb.append(” and j.title like’%”).append(likeName).append(“%'”);

  }

  /** 根據順序查詢* */

  if (request.getParameter(“sx”) !=””

    &&request.getParameter(“sx”).equals(“asc”)) {// 正序

   sx = request.getParameter(“sx”);

   sb.append(” ORDER BY j.logtime”).append(sx);

  } else {// 倒敘

   sb.append(” ORDER BY j.logtimedesc”);

  }

  hql = sb.toString();

 

  // String hql=”FROM Joy1matchlist jWHERE j.asmbr=0 ORDER BY j.logtime

  // DESC”;

 

  try {

   List<Joy1matchlist> hotList =bsService.queryHotBs();

  ActionContext.getContext().getSession().put(“hotList”,hotList);

  } catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

  // 分頁的pageBean,引數pageSize表示每頁顯示記錄數,page為當前頁

  this.pageBean = bsService.queryForPage(5,page, hql);

  request.setAttribute(“category”,category);

  request.setAttribute(“ctcod”,ctcod);

  request.setAttribute(“timers”,timers);

  request.setAttribute(“likeName”,likeName);

  request.setAttribute(“sx”, sx);

  request.setAttribute(“sumPage”,pageBean.getTotalPage());

  return “benye”;

 }

 

 

 

html:

 

<linkrel=”stylesheet” href=”<%=path%>/myjs/bs/game_list.css” type=”text/css”></link>

<scripttype=”text/javascript” src=”<%=path%>/style/jquery-1.4.2.js”></script>

 

<scripttype=”text/javascript”>

 function show_color(){

  var p;

   if(document.getElementById(“page”)!=null&& document.getElementById(“page”)!=””){

   p=document.getElementById(“page”).value;

   }

   if(p!=null || p!=””){

    page=parseInt(p);

   }

   varcategory=”<%=request.getAttribute(“category”)%>”;//專案

   var ctcod=”<%=request.getAttribute(“ctcod”)%>”;//城市

   vartimers=”<%=request.getAttribute(“timers”)%>”;//時間

   if(category==”” ||category==”null”) category=”全部”;

   //city

   if(ctcod==”” ||ctcod==”null”) ctcod=”全部”;

   if(ctcod==”010″) ctcod=”北京市”;

   if(ctcod==”021″) ctcod=”上海市”;

   if(ctcod==”020″) ctcod=”廣州市”;

   if(ctcod==”025″) ctcod=”南京市”;

   if(ctcod==”000″) ctcod=”其他”;

   //timer

   if(timers==”” ||timers==”null”) timers=”全部”;

   if(timers==”oneWeek”)timers=”一週內”;

   if(timers==”oneMonery”)timers=”一月內”;

   if(timers==”threeMonery”)timers=”三月內”;

 

   var array_xm = [0, 1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11];

   var array_cs = [0, 1, 2, 3, 4, 5];

   var array_sj = [0, 1, 2, 3];

   for (var index in array_xm) {

   if($(“#xm” index).html()==category){

     $(“#xm” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

   for (var index in array_cs) {

    if($(“#cs” index).html()==ctcod){

    $(“#cs” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

   for (var index in array_sj) {

   if($(“#sj” index).html()==timers){

    $(“#sj” index).css(“background-color”,”#FF6600″).css(“color”,”#fff”);

    }

   }

  

   varsumPage=”<%=request.getAttribute(“sumPage”)%>”//總記錄數

   var count=sumPage-4;//出現的組數(最後的一組)

   var n=new Array();

   var num5=0;//一組為5個數

   var j=0;//增加次數

   //把長度賦值給陣列

   for(var i=1;i<sumPage;i ){

    n[i]=i;

   }

   j=page-3;

   //page>4時 1,2,3,4,5

   if(sumPage>=5){

     if(page<5){

     //獲取陣列的前5個值

     j=1;

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 j;

     $(“#page_link”).append(“<ahref=’javascript:currPage(” (i 1) “)’id=’link_” (i 1) “‘>” link_num “</a>”);

     if($(“#link_1”).html(“NaN”)){

      $(“#link_1”).html(“1”);

      }

     }

    }

    if(page>=5 && page<sumPage){//page>5時

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 j;

     $(“#page_link”).append(“<ahref=’javascript:currPage(” (i j) “)’id=’link_” (i j) “‘>” link_num “</a>”);

     if($(“#link_” (i j)).html(“NaN”)){

       $(“#link_” (i j)).html(i j);

      }

     }

    }

    if(page==sumPage){//當前頁==總記錄數時

     for(var i=0;i<5;i ){

      num5=n[i];

      var link_num=num5 count;

     $(“#page_link”).append(“<ahref=’javascript:currPage(” (i count) “)’id=’link_” (i count) “‘>” link_num “</a>”);

     if($(“#link_” (i count)).html(“NaN”)){

      $(“#link_” (i count)).html(i count);

      }

     }

    }

   }else{

    if(sumPage==1){

    $(“#page_link”).append(“<ahref=’javascript:currPage(1)’ id=’link_1′>1</a>”);

      

    }else{

     for(var i=0;i<n.length;i ){

      num5=i 1;

      $(“#page_link”).append(“<ahref=’javascript:currPage(” (i 1) “)’id=’link_” (i 1) “‘>” num5 “</a>”);

      if($(“#link_1”).html(“NaN”)){

       $(“#link_1”).html(“1”);

       }

     }

    }

   }

   for(var i=0;i<sumPage;i ){

    n[i]=i;

   if($(“#link_” (n[i] 1)).html()==page){

    $(“#link_” (n[i] 1)).css(“background-color”,”#FF6600″).css(“color”,”#fff”).css(“border-color”,”#ff6600″).css(“font-weight”,”bold”);

    }

   }

  }

</script>

 

 

</head>

<bodyonload=”show_color()”>

 

<formaction=”queryByPrarmate.action” method=”post”name=”myForm” >

<dt>按專案:</dt>

<dd><a  href=”javascript:showFindxm(‘全部’)” id=”xm0″>全部</a><ahref=”javascript:showFindxm(‘足球’)” id=”xm1″>足球</a><a href=”javascript:showFindxm(‘籃球’)” id=”xm2″>籃球</a><ahref=”javascript:showFindxm(‘網球’)” id=”xm3″>網球</a><a href=”javascript:showFindxm(‘羽毛球’)”
id=”xm4″>羽毛球</a><ahref=”javascript:showFindxm(‘乒乓球’)” id=”xm5″>乒乓球</a><a href=”javascript:showFindxm(‘排球’)” id=”xm6″>排球</a><ahref=”javascript:showFindxm(‘檯球’)” id=”xm7″>檯球</a><a href=”javascript:showFindxm(‘游泳’)” id=”xm8″>游泳</a><a href=”javascript:showFindxm(‘田徑’)”
id=”xm9″>田徑</a><ahref=”javascript:showFindxm(‘高爾夫’)” id=”xm10″>高爾夫</a><a href=”javascript:showFindxm(‘其他’)” id=”xm11″>其他</a></dd></dl>

<inputtype=”hidden” id=”category” name=”category”value=”<s:property value=”#request.category” />”/>

<dl style=”display:block”>

<dt>按城市:</dt>

<dd><a  href=”javascript:showFindcs(‘全部’)” id=”cs0″>全部</a><ahref=”javascript:showFindcs(‘010’)” id=”cs1″>北京市</a><ahref=”javascript:showFindcs(‘021’)” id=”cs2″>上海市</a><ahref=”javascript:showFindcs(‘020’)” id=”cs3″>廣州市</a><ahref=”javascript:showFindcs(‘025’)”
id=”cs4″>南京市</a><ahref=”javascript:showFindcs(‘000’)” id=”cs5″>其他</a></dd></dl>

<inputtype=”hidden” id=”ctcod” name=”ctcod”value=”<s:property value=”#request.ctcod” />”/>

<dlstyle=”display:block”>

<dt>按時間:</dt>

<dd><a  href=”javascript:showFindsj(‘全部’)” id=”sj0″>全部</a><ahref=”javascript:showFindsj(‘oneWeek’)” id=”sj1″>一週內</a><ahref=”javascript:showFindsj(‘oneMonery’)” id=”sj2″>一月內</a><ahref=”javascript:showFindsj(‘threeMonery’)” id=”sj3″>三月內</a></dd></dl>

<inputtype=”hidden” id=”timers” name=”timers”value=”<s:property value=”#request.timers” />”/>

<dlstyle=”display:block”>

<dt>關鍵字:</dt>

<dd><inputname=”likeName” type=”text” id=”likeName”onkeypress= “if(event.keyCode==39)event.keyCode=0;” /><inputclass=”button” name=”” type=”button” value=”篩 選”onclick=”showLike()” /></dd></dl>

</div>

 

 

 

<s:iteratorvalue=”pageBean.list” status=’st’>

<li><divclass=”game_img”><a href=”<%=path%>/bs_queryBsById.action?id=<s:property value=”id”/>&type=0″><img src=”<s:property value=’imgsrc’/>” /></a></div>

<divclass=”related_c”><p><a href=”<%=path%>/bs_queryBsById.action?id=<s:property value=”id”/>&type=0″><s:property value=”title”/></a></p><p>分類:<s:property value=”category” /></p><p>場館:<s:property value=”unname”/></p><p>時間:<s:propertyvalue=”stime.toString().substring(0,stime.toString().length()-5)”/></p><p>優體價:<s:property
value=”utivalue” />元</p><p>原價:<s:property value=”srcvalue”/>元</p></div><ahref=”<%=path %>/bs_queryBsById.action?id=<s:propertyvalue=”id” />&type=0″><spanclass=”button”>立即購買</span></a></li>

</s:iterator>

 

 

 

 

 

<divclass=”page”>

   <input type=”hidden”id=”page” name=”page” value=”<s:propertyvalue=”pageBean.currentPage” />”/>

   <input type=”hidden”id=”sumNum” name=”sumNum” value=”<s:propertyvalue=”pageBean.totalPage” />”/>

<ahref=”javascript:first()”>首頁</a>

<ahref=”javascript:last()”>上一頁</a>

 

 <spanid=”page_link”></span>

 

 

<ahref=”javascript:next() “>下一頁</a>

<ahref=”javascript:end()”>尾頁</a>

 共<s:property value=”pageBean.totalPage” />頁

 

 轉到<input id=”goPages” type=”text” />頁<input class=”page_button”   onclick=”goPage(${pageBean.totalPage})” type=”button” value=”確定” /></div>

</form>

 

 

還有段JS,控制的是 上下頁,需要從新建立Js

 

var page=0;

 //直接跳轉到指定頁面

functiongoPage(endPage){

  var reg = /^(?:0|[1-9][0-9]?|100)$/;

 

 if(!reg.test(document.getElementById(“goPages”).value)){

  alert(“頁碼填寫有誤!”);

 document.getElementById(“goPages”).value=””;

 }else if(

 parseInt(document.getElementById(“goPages”).value)>endPage|| document.getElementById(“goPages”).value==0){

  alert(“此頁不存在!”);

 document.getElementById(“goPages”).value=””;

 }else{

 document.getElementById(“page”).value=document.getElementById(“goPages”).value;

  document.myForm.submit();

 }

 

}

 

 

  //下一頁

  function next(){

   varendNum=document.getElementById(“sumNum”).value;

  if(document.getElementById(“page”).value==endNum){

    alert(“已經是尾頁了”);

    return;

   }else{

    page =1;

    document.getElementById(“page”).value=page;

    document.myForm.submit();

   }

  

  }

  //上一頁

  function last(){

  if(document.getElementById(“page”).value==1){

    alert(“已經是首頁了”);

    return;

   }else{

    page-=1;

   document.getElementById(“page”).value=page;

    document.myForm.submit();

   }

  }

  //首頁

  function first(){

   document.getElementById(“page”).value=1;

    document.myForm.submit();

  }

  //尾頁

  function end(){

    varendNum=document.getElementById(“sumNum”).value;

    document.getElementById(“page”).value=endNum;

    document.myForm.submit();

  }

  //每次查出按第一頁顯示

  function showBtn(){

  document.getElementById(“page”).value=1;

  

  }

  //xm

  function showFindxm(xm){

  document.getElementById(“category”).value=xm;

   showBtn();

   document.myForm.submit();

  }

  function showFindcs(cs){

  document.getElementById(“ctcod”).value=cs;

   showBtn();

   document.myForm.submit();

  }

  function showFindsj(sj){

  document.getElementById(“timers”).value=sj;

   showBtn();

   document.myForm.submit();

  }

  //like

  function showLike(){

   varlikeNames=document.getElementById(“likeNames”).value;

   varlikeName=document.getElementById(“likeName”).value;

   if(likeName!=null &&likeName!=””){

    showBtn();  

    document.myForm.submit();

   }else{

   likeNames=document.getElementById(“likeName”).value=likeNames;

    showBtn();

    document.myForm.submit();

   }

  }

  //排序

  function showSx(sx){

  document.getElementById(“sx”).value=sx;

   document.myForm.submit();

  }

 

 //currPage

 function currPage(num){

 document.getElementById(“page”).value=num;

  document.myForm.submit();

 }

 

 

 

 

好了,到此結束,新手書寫,還望見諒。如有問題即是提出,謝謝!