如何写一个web分页

                                    MVC框架javaWEB
我们的分页是建立在mvc项目下的
1、我们需要改造的是dao接口,我们在dao接口中添加一个方法
int getTotalRecord();//查询所有的记录条数
List<Book> findPageBooks(int startIndex,int pageSize);//查询当前页面中的记录,其中startindex是起始索引 pageSize表示当前页面表示几个记录
public interface BookDao {

	void addBook(Book book);
	int getTotalRecord();//查询所有的记录条数
	List
    
    
     
      findPageBooks(int startIndex,int pageSize);
}

    
    
2、我们写实现上述接口中的方法的实现类 BookDaoimpl
public int getTotalRecord() 是从数据库中查询总的记录条数
public List<Book> findPageBooks(int startIndex, int pageSize)是查询当前页面中的记录数
具体代码如下:
public class BookDaoimpl implements BookDao {
	private QueryRunner qr=new QueryRunner(DBCPUtil.getDataSource());
	@Override
	public void addBook(Book book) {
		// TODO Auto-generated method stub
		try {
			qr.update("insert into book(id,name,author,price,image,description,category_id) values(?,?,?,?,?,?,?)", book.getId(),book.getName(),book.getAuthor(),book.getPrice(),book.getImage(),book.getDescription(),book.getCategory_id());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new DaoException(e);
		}
	}
	@Override
	public int getTotalRecord() {
		// TODO Auto-generated method stub
		try {
			Long num=(Long)qr.query("select count(*) from book", new ScalarHandler(1));
			return num.intValue();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new DaoException(e);
		}
	}
	@Override
	//查询当前页码的书
	public List
     
     
      
       findPageBooks(int startIndex, int pageSize) {
		// TODO Auto-generated method stub
				try {
				return qr.query("select * from book limit ?,?", new BeanListHandler
      
      
       
       (Book.class),startIndex,pageSize);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					throw new DaoException(e);
				}
	}

}

      
      
     
     
3、我们写service接口 里面定义了一个方法Page findPageRecords(String pagenum);返回的是Page类

public interface BusinessService {
	void addCategory(Category c);
	List
     
     
      
       findAllCategory();
	void addBook(Book book);
	Page findPageRecords(String pagenum);
	
			
			
}

     
     
4、编写page类:注释已经够清楚的了
public class Page {
	private  List records;
	private int pagenum;//当前页码
	private int pagesize=2;//每页显示的条数
	private int totalrecords;//总的记录数
	private int totalpage;//总的页数
	private int startindex;//每页开始的索引    索引是从0 开始的
	private String uri;
	public String getUri() {
		return uri;
	}

	public void setUri(String uri) {
		this.uri = uri;
	}

	public Page(int pagenum,int totalrecords){//传递当前页码和总的记录数
		this.pagenum=pagenum;
		this.totalrecords=totalrecords;
		//总的页数
		totalpage=totalrecords%pagesize==0?(totalrecords/pagesize):(totalrecords/pagesize+1);
		//每页开始的索引
		startindex=(pagenum-1)*pagesize;
		
	}

	public List getRecords() {
		return records;
	}

	public void setRecords(List records) {
		this.records = records;
	}

	public int getPagenum() {
		return pagenum;
	}

	public void setPagenum(int pagenum) {
		this.pagenum = pagenum;
	}

	public int getPagesize() {
		return pagesize;
	}

	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}

	public int getTotalrecords() {
		return totalrecords;
	}

	public void setTotalrecords(int totalrecords) {
		this.totalrecords = totalrecords;
	}

	public int getTotalpage() {
		return totalpage;
	}

	public void setTotalpage(int totalpage) {
		this.totalpage = totalpage;
	}

	public int getStartindex() {
		return startindex;
	}

	public void setStartindex(int startindex) {
		this.startindex = startindex;
	}
}
5、实现service接口中的类BusinessServiceImpl
package cn.itcast.service.impl;

import java.util.List;

import cn.itcast.dao.BookDao;
import cn.itcast.dao.CategoryDao;
import cn.itcast.dao.impl.BookDaoimpl;
import cn.itcast.dao.impl.CategoryDaoImpl;
import cn.itcast.domain.Book;
import cn.itcast.domain.Category;
import cn.itcast.service.BusinessService;
import cn.itcast.util.Page;
import cn.itcast.util.idGenerator;

public class BusinessServiceImpl implements BusinessService {
	private CategoryDao cDao=new CategoryDaoImpl();
	private BookDao bDao=new BookDaoimpl();
	@Override
	public void addCategory(Category c) {
		// TODO Auto-generated method stub
		c.setId(idGenerator.genPrimaryKey());
		cDao.addCategory(c);
	}

	@Override
	public List
    
    
     
      findAllCategory() {
		// TODO Auto-generated method stub
		return cDao.findAllCategory();
	}

	@Override
	public void addBook(Book book) {
		// TODO Auto-generated method stub
		book.setId(idGenerator.genPrimaryKey());
		bDao.addBook(book);
	}

	@Override
	public Page findPageRecords(String pagenum) {
		// TODO Auto-generated method stub
		//默认的页码是1
		int num=1;
		if(pagenum!=null&&!"".equals(pagenum.trim())){
			num = Integer.parseInt(pagenum);
		}
		//总的记录书从bDao中得到
		int totalrecords = bDao.getTotalRecord();
		Page page=new Page(num, totalrecords);
		//查询当前页码的书籍 索引默认是0 pagesize是3
		List
     
     
      
       records = bDao.findPageBooks(page.getStartindex(), page.getPagesize());
		page.setRecords(records);//记录设置到Page类中
		return page;//返回page
		
	}

}

     
     
    
    
6、我们在要实现分页的jsp页面中添加如下代码 即可实现简单的分页

    
    
		第${page.pagenum }页/共${ page.totalpage}页  
		上一页
		下一页

    
    
7、改进,将上述的html代码进行封装到一个page.jsp中
代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    
    
		第${page.pagenum }页/共${ page.totalpage}页  
		上一页
		下一页

    
    
8、在要实现分页中代码中静态包含这个page.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/manager/header.jsp"%>

显示所有的图书

书名作者描述所属分类图片操作
${p.name }${p.author }${p.description }${p.category_id } 修改 删除
<%@include file="/manager/page.jsp" %>
9、继续改进page.jsp 我们把其中的/servlet/ManagerServlet?operation=showAllBook该为一个${page.uri}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    
    
		第${page.pagenum }页/共${ page.totalpage}页  
		上一页
		下一页

    
    
10、因此呢,我们继续改造page类在其中添加了String uri类型</div><div>11、在将page放到request域中之前设置,起始就是在控制器ManageServlet中设置
private void showAllBook(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String pagenum=request.getParameter("pagenum");
		Page page = s.findPageRecords(pagenum);
		page.setUri("/servlet/ManagerServlet?operation=showAllBook");
		request.setAttribute("page", page);
		request.getRequestDispatcher("/manager/listBooks.jsp").forward(request, response);;
		
	}


 
 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值