spring + velocity實現分頁程式

來源:互聯網
上載者:User
 }

 public int getPageCount() {
  // 計算出總頁數
  pageCount = (rowCount + pageSize - 1) / pageSize;
  return pageCount;
 }

 public int getBeginPosition() {
  // 計算出頁起始
  beginPosition = (currentPage - 1) * pageSize + 1;
  return beginPosition;
 }

 public int getEndPosition() {
  // 計算出頁終止
  if (currentPage >= pageCount) {
   endPosition = rowCount;
  } else {
   endPosition = currentPage * pageSize;
  }
  return endPosition;
 }

 public boolean isHasNextPage() {
  // 計算出是否有下一頁
  if (currentPage >= pageCount) {
   hasNextPage = false;
  } else {
   hasNextPage = true;
  }
  return hasNextPage;
 }

 public boolean isHasPreviousPage() {
  // 計算出是否有上一頁
  if (currentPage <= 1) {
   hasPreviousPage = false;
  } else {
   hasPreviousPage = true;
  }
  return hasPreviousPage;
 }

 public int getFirstPage() {
  return 1;
 }

 public int getPreviousPage() {
  if (this.isHasPreviousPage()) {
   return currentPage - 1;
  }
  return currentPage;
 }

 public int getNextPage() {
  if (this.isHasNextPage()) {
   return currentPage + 1;
  } else {
   return currentPage;
  }
 }

 public int getLastPage() {
  return pageCount;
 }

 /**
  * 擷取頁資料
  *
  * @return ArrayList
  */
 public ArrayList getArrayList() {

  ArrayList list = new ArrayList();
  for (int i = beginPosition; i <= endPosition; i++) {
   list.add(arrayList.get(i - 1));
  }
  return list;

 }
}

 

 

接續

package com.ali;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.ApplicationContext;
import org.springframework.validation.BindException;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.ali.db.User;
import com.ali.util.PageUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserListController extends SimpleFormController {
 private IIbatisDAO currDAO;
 private String  m_pagesize;
 public UserListController() {
  setCommandClass(UserListForm.class);
 }

 public ModelAndView handleRequestInternal(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  
  if ( request.getMethod().equals("GET"))
  {
   //處理 http get請求
   System.out.println("do Get!!");
   
   UserListForm form = new UserListForm();
   form.setPage("1");
   form.setPageSize(getPageSize());
   System.out.println("handleRequestInternal");
   return onSubmit(request, response, form, null);
  }
  else
  {
   //return onSubmit(request, response, null, null);
   System.out.println("do Post!!");
   return super.handleRequestInternal(request, response);
  }
  
 }

 protected ModelAndView onSubmit(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  //處理http post請求
  UserListForm form = (UserListForm) command;
  System.out.println("user list:" + form);

  List list = this.getDAO().findUsers();
  ArrayList arrList = new ArrayList();
  for (Iterator i = list.iterator(); i.hasNext();) {
   User user = (User) i.next();
   System.out.println(user);
   arrList.add(user);
  }

  PageUtil util = new PageUtil(arrList, form.getPageSize(), form
    .getPage());
  System.out.println("list.size=" + arrList.size());
  request.setAttribute("userlist", util.getArrayList());

  request.setAttribute("pager", util);

  return new ModelAndView(this.getSuccessView());
 }

 public void setDAO(IIbatisDAO dao) {
  currDAO = dao;
 }

 public IIbatisDAO getDAO() {
  return currDAO;
 }
 public String getPageSize()
 {
  return m_pagesize;
 }
 
 public void setPageSize(String pagesize)
 {
  m_pagesize = pagesize;
 }
}

具體的velocity內容

 <BODY >
 
    <form name="userlist" method="post" action="/spring/userlist.do">
         <input type="hidden" name="page" >
         <input type="hidden" name="pageSize"  value=2>    
    </form>
 
 <table width="772"  border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
   <tr>
     <td>     
       <table width="750"  border="0" align="center" cellpadding="5" cellspacing="1">
         <tr align="center">
           <td background="images/q_12.gif"><span class="ff">使用者名稱</span></td>
           <td background="images/q_12.gif" class="ff">網站</td>
           <td background="images/q_12.gif"><span class="ff">郵箱</span></td>
         </tr>
 #foreach($user in $userlist)
 #set($color="E9F4FF")
 #if($velocityCount%2==0)
 #set($color="FFFFFF")
 #end
         <tr align="center" bgcolor="$color">
                   <td class="ii">$user.getUsername()</td>         
                         <td>$user.getSite()</td>
             <td class="style28">$user.getEmail()</td>
         
                 </tr>
 #end       
       </table>
 #set($pageFirst=1)
 
 #if ($pager)
 #set($pageEnd=$pager.getPageCount())
 #set($pagePrevious=$pager.getPreviousPage())
 #set($pageNext = $pager.getNextPage())
 #else
 #set($pageEnd=1)
 #set($pagePrevious=1)
 #set($pageNext =1)
 #end
 <scrīpt>
 
 function goto(p) {
         userlist.page.value=p;
         userlist.pageSize.value=2;
          userlist.submit();
 }
 </scrīpt>
 <table width="100%" border="0">
   <tr>
   <td width="98%" height="43" align="right">
    #if ($pager)
    總 $pager.rowCount 條
    第 $pager.currentPage/$pager.pageCount 頁
    #else
    總 0 條
    第 0 頁
    #end
    <a href="#$pageFirst" ōnclick="goto($pageFirst)">首頁</a>
    <a href="#$pagePrevious" ōnclick="goto($pagePrevious)">上一頁</a>
    <a href="#$pageNext" ōnclick="goto($pageNext)">下一頁</a>
    <a href="#$pageEnd" ōnclick="goto($pageEnd)">末頁</a>
   </td>
   </tr>
 </table>
     </td>
   </tr>
 </table>
 
 </BODY>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.