原因:像分页这种功能其实随处可见,虽然现在有了很多的工具类,但是ssm框架或者更早的框架也会有手敲的现象。
废话少说 上干货!!!

一:分页实体类

/**
 * 分页实体类
 * @category 使用前需按如下顺序设置属性<br/>
 * pageBean.setPageNo(page);<br/>
 * pageBean.setTotalRecords(count);<br/>
 * pageBean.setPerPage(10);<br/> 
 * @author wgs
 */
public class PageBean {
	private int totalRecords;	//总记录数
	private int totalPages;		//总页数
	private int perPage;		//每页的条数
	private int pageNo;			//当前页号
	private int prevPage;		//前页页号
	private int nextPage;		//后页页号
	private boolean hasPrev;	//是否有前页
	private boolean hasNext;	//是否有后页
	private String url;			//翻页提交的Action地址

	/**
	 * 获取下一页页号
	 * @return 下一页页号
	 */
	public int getNextPage() {
		return nextPage;
	}
	/**
	 * 设置下一页页号
	 * @param nextPage - 下一页页号
	 */
	public void setNextPage(int nextPage) {
		this.nextPage = nextPage;
	}
	
	/**
	 * 获取每页的条数
	 * @return 每页的条数
	 */
	public int getPerPage() {
		return perPage;
	}
	/**
	 * 设置每页的条数<br />
	 * 设置每页的条数时,同时再根据总记录数(totalRecords)自动计算总页数
	 * @param perPage - 每页的条数
	 */
	public void setPerPage(int perPage) {
		this.perPage = perPage;
                if(totalRecords==0)
                    this.totalPages=0;
		else
                    this.totalPages=(totalRecords-1)/perPage + 1;
	}
	/**
	 * 获取当前页号
	 * @return 前页号
	 */
	public int getPageNo() {
		return pageNo;
	}
	/**
	 * 设置当前页号<br/>
	 * 设置当前页号时,根据总页数自动计算出上一页和下一页的页号。
	 * @param pageNo - 当前页号
	 */
	public void setPageNo(int pageNo) {
		if(pageNo<1) pageNo=1;
		if(pageNo>totalPages) pageNo=totalPages;
		this.pageNo = pageNo;
		if(pageNo>1){
			this.prevPage=pageNo-1;
			this.hasPrev=true;
		}else{
			this.prevPage=1;
			this.hasPrev=false;
		}
		if(pageNo<totalPages){
			this.nextPage=pageNo+1;
			this.hasNext=true;
		}else{
			this.nextPage=totalPages;
			this.hasNext=false;
		}
		this.nextPage=pageNo+1;
	}
	/**
	 * 获取上一页页号
	 * @return 上一页页号
	 */
	public int getPrevPage() {
		return prevPage;
	}
	/**
	 * 设置上一页页号
	 * @param prevPage - 上一页页号
	 */
	public void setPrevPage(int prevPage) {
		this.prevPage = prevPage;
	}
	
	/**
	 * 获取总页数
	 * @return 总页数
	 */
	public int getTotalPages() {
		return totalPages;
	}
	/**
	 * 设置总页数
	 * @param totalPages - 总页数
	 */
	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	
	/**
	 * 获取总记录数
	 * @return 总记录数
	 */
	public int getTotalRecords() {
		return totalRecords;
	}
	/**
	 * 设置总记录数<br/>
	 * 设置总记录数时,根据总记录数和每页记录数自动计算总页数。
	 * @param totalRecords - 总记录数
	 */
	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
		if(totalRecords==0)
			this.totalPages=0;
		else
			this.totalPages=(totalRecords-1)/perPage + 1;
	}
	
	/**
	 * 判断是否还有下一页
	 * @return true-有;false-没有。
	 */
	public boolean isHasNext() {
		return hasNext;
	}
	/**
	 * 设置是否还有下一页
	 * @param hasNext - 是否还有下一页
	 */
	public void setHasNext(boolean hasNext) {
		this.hasNext = hasNext;
	}
	
	/**
	 * 判断是否还有上一页
	 * @return true-有;false-没有。
	 */
	public boolean isHasPrev() {
		return hasPrev;
	}
	/**
	 * 设置是否还有上一页
	 * @param hasPrev - 是否还有上一页
	 */
	public void setHasPrev(boolean hasPrev) {
		this.hasPrev = hasPrev;
	}
	
	/**
	 * 获取URL地址
	 * @return URL地址
	 */
	public String getUrl() {
		return url;
	}
	/**
	 * 设置URL地址
	 * @param url - URL地址
	 */
	public void setUrl(String url) {
		this.url = url;
	}

}

二:分页的controller

/**
     * controller
     * 
     */
    @RequestMapping(value = "test")
    public void test(HttpServletRequest request,@RequestParam Integer rows, @RequestParam Integer page){
    	
    	Integer count =0;
    	

    	PageBean pageBean = new PageBean();
    
    	try{
    		count = "总条数";
    		
        	if((rows == null) || (rows.intValue() <= 10)){
        		rows = Integer.valueOf(10);
        	}
        	//设置分页信息
    		pageBean.setPerPage(rows);
    		pageBean.setTotalRecords(count);
    		if (page > pageBean.getTotalPages() && pageBean.getTotalPages() != 0) {
    			page = pageBean.getTotalPages();
    		}
    		pageBean.setPageNo(page);
    		
    		
    		// 分页开始条数
        	Integer first = (page - 1) * pageBean.getPerPage();
        	
        	if (first != 0) {
    	    	if (first >= count) {
    	    		page--;
    	    		pageBean.setPageNo(page);
    	    		first = (page-1) * pageBean.getPerPage();
    	    	}
        	}        	

         
            //获取展示的分页信息
           arr = query( first, rows);
             model.addAttribute("total", Long.valueOf(count));
           

    	}catch(Exception e){
    		//logger.error("UserController viewUsers Exception:"+e.getMessage());
    		throw new Exception(e.getMessage());
    	}
    	
    

新手看不懂的可以私我讨论,不足之处多多指出!个人纯属当做笔记

更多推荐

Java代码分页展示(知识点满满)