构建基于maven的综合项目(六)--分页

一、前端分页
    1、将分页部分单独做成一个jsp
<%@page import="java.net.URLEncoder"%>
<%@page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<link type="text/css" rel="stylesheet" href="<c:url value='/styles/page.css'/>"/>
<%
	//每页显示记录数
	int pageSize = (Integer)request.getAttribute("pageSize");
	//最多显示分页页数
	int displayPageCount = (Integer)request.getAttribute("displayPageCount");
	//当前页
	int currentPage = (Integer)request.getAttribute("currentPage");
	//记录总数
	int count = (Integer)request.getAttribute("count");
	//总页数
	int pageCount = 0;
	if(count % pageSize == 0){
		pageCount = count / pageSize;
	} else {
		pageCount = count / pageSize + 1;
	}
	if(pageCount < currentPage){
		currentPage = pageCount;
	}
	//起始页
	int pageBegin = currentPage - (displayPageCount / 2);
	if(pageBegin < 1){
		pageBegin = 1;
	}
	//结束页
	int pageEnd = currentPage + (displayPageCount / 2);
	if(pageEnd > pageCount){
		pageEnd = pageCount;
	}
	//关键字
	String keyWord = request.getAttribute("keyWord") == null 
		? "" : (String)request.getAttribute("keyWord");
	keyWord = URLEncoder.encode(keyWord,"utf-8");
	String actionString = (String)request.getAttribute("actionString");
%>
<!-- 页面显示连接 -->
<a id="start_page" class="start"><spring:message code="message.page.start"/></a>
<a id="pre_page" class="pre"><spring:message code="message.page.prePage"/></a>
<span>
	<%
		for(int i = pageBegin;i <= pageEnd;i ++){
			if(i != currentPage){
	%>
				<a href="javascript:goPage(<%=i%>);"><%=i%></a>
	<%
			} else {
	%>
				<a class="selected"><%=i%></a>
	<%
			}
		}
	%>
</span>
<a id="next_page" class="next"><spring:message code="message.page.nextPage"/></a>
<a id="end_page" class="end"><spring:message code="message.page.endPage"/></a>
<script type="text/javascript">
	var pageForm = document.forms["pageForm"];
	pageForm.setAttribute("action","<%=actionString%>");
	function prePage(){
		pageForm.currentPage.value = pageForm.currentPage.value - 1;
		pageForm.submit();
	}
	function goPage(currentPage){
		pageForm.currentPage.value = currentPage;
		pageForm.submit();
	}
	function nextPage(){
		pageForm.currentPage.value = parseInt(pageForm.currentPage.value) + 1;
		pageForm.submit();
	}
	//控制链接和样式
	if(<%=pageCount%> <= 1){
		document.getElementById("page_div").style.display = "none";
	}
	if(<%=currentPage%> == 1 && <%=pageCount%> > 1){
		document.getElementById("next_page").href = "javascript:nextPage()";
		document.getElementById("end_page").href = "javascript:goPage(<%=pageCount%>)";
		document.getElementById("page_div").className = "page";
	}
	if(<%=currentPage%> > 1 && <%=currentPage%> != <%=pageCount%>){
		document.getElementById("pre_page").href = "javascript:prePage()";
		document.getElementById("start_page").href = "javascript:goPage(1)";
		document.getElementById("next_page").href = "javascript:nextPage()";
		document.getElementById("end_page").href = "javascript:goPage(<%=pageCount%>)";
		document.getElementById("page_div").className = "page";
	}
	if(<%=currentPage%> > 1 && <%=currentPage%> == <%=pageCount%>){
		document.getElementById("pre_page").href = "javascript:prePage()";
		document.getElementById("start_page").href = "javascript:goPage(1)";
		document.getElementById("page_div").className = "page";
	}
</script>

    2、页面引用
<div id="page_div" class="page">
    <form name="pageForm">
        <input type="hidden" name="currentPage" value="${currentPage }">
        <input type="hidden" name="keyWord" value="${keyWord }"/>
    </form>
    <%@include file="../common/page.jsp" %>
</div>

    3、后台分页对象Page.java
package com.cpkf.notpad.vo;

import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.cpkf.notpad.commons.constants.PageConstants;

/**  
 * Filename:    Page.java
 * Description: 分页对象
 * Company:     
 * @author:     Jiang.hu
 * @version:    1.0
 * Create at:   2011-6-6 下午12:47:38
 * modified:    
 */
public class Page {
	//每页显示记录数
	private int pageSize;
	//显示分页数
	private int displayPageCount;
	//当前页
	private int currentPage;
	//总记录数
	private int count;
	//关键字
	private String keyWord;
	//当前页记录集合
	private List list = new ArrayList();
	//请求路径
	private String actionString;
	
	public String getActionString() {
		return actionString;
	}
	public void setActionString(String actionString) {
		this.actionString = actionString;
	}
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getDisplayPageCount() {
		return displayPageCount;
	}
	public void setDisplayPageCount(int displayPageCount) {
		this.displayPageCount = displayPageCount;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getKeyWord() {
		return keyWord;
	}
	public void setKeyWord(String keyWord) {
		this.keyWord = keyWord;
	}
	/* 
	 * method name   : initPage
	 * description   : 初始化page对象
	 * @author       : Jiang.Hu
	 * @param        : @param request
	 * @return       : Page
	 * Create at     : 2011-6-6 下午12:56:40
	 * modified      : 
	 */      
	public static Page initPage(HttpServletRequest request){
		int currentPage = request.getParameter("currentPage") == null 
			? 1 : Integer.parseInt(request.getParameter("currentPage"));
		String keyWord = request.getParameter("keyWord") == null 
			? "" : request.getParameter("keyWord");
		String actionString = request.getContextPath() + request.getServletPath();
		Page page = new Page();
		page.setPageSize(PageConstants.PAGE_SIZE);
		page.setDisplayPageCount(PageConstants.DISPLAY_PAGE_COUNT);
		page.setCurrentPage(currentPage);
		page.setKeyWord(keyWord);
		page.setActionString(actionString);
		return page;
	}
	/* 
	 * method name   : setPage
	 * description   : 设置page对象
	 * @author       : Jiang.Hu
	 * @param        : @param request
	 * @param        : @param page
	 * @return       : void
	 * Create at     : 2011-6-6 下午12:56:57
	 * modified      : 
	 */      
	public static void setPage(HttpServletRequest request,Page page){
		request.setAttribute("pageSize", page.getPageSize());
		request.setAttribute("displayPageCount", page.getDisplayPageCount());
		request.setAttribute("currentPage", page.getCurrentPage());
		request.setAttribute("count", page.getCount());
		request.setAttribute("keyWord", page.getKeyWord());
		request.setAttribute("actionString", page.getActionString());
	}
}

    4、servlet
@RequestMapping(value="/account/showUserList.do",method={RequestMethod.POST,RequestMethod.GET})
	public String showUserList(HttpServletRequest request,HttpServletResponse response){
		Page page  = accountService.getAllAccountVosForPage(Page.initPage(request));
		List<AccountVo> accountList = page.getList();
		if(accountList != null){
			request.setAttribute(AccountConstants.ACCOUNT_LIST, accountList);
		}
		Page.setPage(request, page);
		return "account/accountList";
	}

    5、dao层我们将分页查询的数据放入page对象中返回即可;
        在page.jsp中,我们动态获取页面请求,并设置到分页form的action属性中,这样,一个页面可以满足不同分页请求

你可能感兴趣的:(JavaScript,spring,maven,jsp,servlet)