MVC框架javaWEB
我们的分页是建立在mvc项目下的
1、我们需要改造的是dao接口,我们在dao接口中添加一个方法
int getTotalRecord();//查询所有的记录条数
List<Book> findPageBooks(int startIndex,int pageSize);//查询当前页面中的记录,其中startindex是起始索引 pageSize表示当前页面表示几个记录
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);
}
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;
}
}
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
}
}
第${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"%>
显示所有的图书
<%@include file="/manager/page.jsp" %>
书名 作者 描述 所属分类 图片 操作 ${p.name } ${p.author } ${p.description } ${p.category_id } 修改 删除
9、继续改进page.jsp 我们把其中的/servlet/ManagerServlet?operation=showAllBook该为一个${page.uri}
10、因此呢,我们继续改造page类在其中添加了String uri类型</div><div>11、在将page放到request域中之前设置,起始就是在控制器ManageServlet中设置<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 第${page.pagenum }页/共${ page.totalpage}页 上一页 下一页
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);; }