文章目录
前言
商品分页,是每一个系统都必须实现的,Mysql数据库实现分页相对来说比较简单。
话不多说,直接看效果图
一、封装一个页面类PageBean
import java.util.List;
public class PageBean<T> {
private int pageNow;//当前页面
private int counts;//数据库中的记录条数
private int pageSize;//一个页面显示的数据量
//private int pages;//页面总数量
private List<T> beanList;//将数据库查询的结果添加到beanList集合中
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getCounts() {
return counts;
}
public void setCounts(int counts) {
this.counts = counts;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPages() {
int pages = this.counts / this.pageSize;//记录条数/一个页面显示的数据条数
return this.counts % this.pageSize == 0 ? pages : pages + 1;
}
public List<T> getBeanList() {
return beanList;
}
public void setBeanList(List<T> beanList) {
this.beanList = beanList;
}
}
二、在数据库操作类dao中创建分页查询方法
public PageBean showFenleiBypage(int pageNow, int pageSize) throws SQLException {
PageBean pb = new PageBean();
pb.setPageNow(pageNow);
pb.setPageSize(pageSize);
pb.setCounts(this.getCounts());
List list = new ArrayList();
QueryRunner queryRunner = new QueryRunner(PropertiesUtils.getDataSource());
String sql = "select * from students limit ? , ?";
list = queryRunner.query(sql, new BeanListHandler<>(Student.class),(pageNow - 1) * pageSize,pageSize);
pb.setBeanList(list);
return pb;
}
三、在servlet中调用showFenleiBypage(pageNow,pageSize)请求数据,并将请求的数据响应到页面。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String method = request.getParameter("method");
if("list".equals(method)) {
this.list(request,response);
}else if("add".equals(method)){
this.add(request, response);
}else if("edit".equals(method)) {
this.findById(request, response);
}else if("editsubmit".equals(method)) {
this.editsubmit(request, response);
}else if("delate".equals(method)) {
this.delete(request, response);
}else if("listfenye".equals(method)) {
int pageNow = this.getPageNow(request);
int pageSize = 10;
PageBean pb;
try {
pb = DaoFactory.getInstance().getStudentDao().showFenleiBypage(pageNow,pageSize);
request.setAttribute("pb", pb);
request.getRequestDispatcher("page/student/list.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public int getPageNow(HttpServletRequest req) {
String pageNow = req.getParameter("pageNow");
if(pageNow == null || pageNow.trim().isEmpty()) {
return 1;
}
return Integer.parseInt(pageNow);
}
四、在页面中实现分页栏。
<table class="page">
<td>
<button>第${pb.pageNow }页/共${pb.pages }页</button>
<button><a href = "<%=basePath%>student?method=listfenye&pageNow=1">首页</a></button>
<c:if test="${pb.pageNow > 1 }">
<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pageNow - 1}">上一页</a></button>
</c:if>
<c:choose>
<c:when test = "${pb.pages <= 10 }">
<c:set var = "begin" value ="1"></c:set>
<c:set var = "end" value ="${pb.pages }"></c:set>
</c:when>
<c:otherwise>
<c:set var = "begin" value ="${pb.pageNow - 5 }"></c:set>
<c:set var = "end" value ="${pb.pageNow + 4 }"></c:set>
<c:if test = "${begin <= 1 }">
<c:set var = "begin" value ="1"></c:set>
<c:set var = "end" value ="10"></c:set>
</c:if>
<c:if test = "${end >= pb.pages }">
<c:set var = "begin" value ="${pb.pages - 9 }"></c:set>
<c:set var = "end" value ="${pb.pages }"></c:set>
</c:if>
</c:otherwise>
</c:choose>
<c:forEach begin = "${begin }" end = "${end}" var = "i">
<c:choose>
<c:when test = "${pb.pageNow == i }">
[${i }]
</c:when>
<c:otherwise>
<a href = "<%=basePath%>student?method=listfenye&pageNow=${i}">[${i }]</a>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${pb.pageNow < pb.pages }">
<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pageNow + 1}">下一页</a></button>
</c:if>
<button><a href = "<%=basePath%>student?method=listfenye&pageNow=${pb.pages}">尾页</a></button>
<input type="text" class="page-no" name="pageNo" />
</td>
</table>
跳转代码
<script type="text/javascript">
function _go() {
var pc = $("#pageCode").val();//获取文本框中的当前页码
if(!/^[1-9]\d*$/.test(pc)) {//对当前页码进行整数校验
alert('请输入正确的页码!');
return;
}
if(pc > ${pb.pages}) {//判断当前页码是否大于最大页
alert('请输入正确的页码!');
return;
}
window.location.href="student?method=listfenye&pageNow=" + pc;
}
</script>
<span>到</span>
<input type="text" class="inputPageCode" id="pageCode" value="${pb.pageNow}" style="width: 20px"/>
<span>页</span>
<a href="javascript:_go();" class="aSubmit">确定</a>
总结
:
以上就是今天要讲的内容,本文讲解了Mysql数据库的分页方法,有不懂的欢迎提问。