第一步:首先建立一个PageBean
package com.qn.jq.daomain;
import java.util.List;
/**
* @author Lizhenye
* @date 2019/7/30 20:04
*/
public class PageBean<T> {
private int totalCount; //总记录数 //需要方法
private int totalPage; //总页数
private List<T> list; //每页的数据 //也要方法来设置
private int currentPage; // 表示当前的页数
private int pageSize; //每页显示多少个数据
public PageBean(int totalCount, int totalPage, List<T> list, int currentPage, int pageSize) {
this.totalCount = totalCount;
this.totalPage = totalPage;
this.list = list;
this.currentPage = currentPage;
this.pageSize = pageSize;
}
public PageBean() {
}
@Override
public String toString() {
return "PageBean{" +
"totalCount=" + totalCount +
", totalPage=" + totalPage +
", list=" + list +
", currentPage=" + currentPage +
", pageSize=" + pageSize +
'}';
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
第二步 写dao方法 用来查询总条数totalCount 以及 每一页的数据List
public interface ProductDao {
//写一个查询一页数据的方法
List<Product> selectList(int currentPage,int pageSize);
//写一个查询所有条数的语句
int selectCountProduct();
}
写一个daoImpl 实现里面的代码内容
package com.qn.jq.dao.impl;
import com.qn.jq.dao.ProductDao;
import com.qn.jq.daomain.Product;
import com.qn.jq.utils.C3P0_utils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* @author Lizhenye
* @date 2019/7/30 20:06
*/
public class ProductDaoImpl implements ProductDao{
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3P0_utils.dataSource());
@Override
public List<Product> selectList(int currentPage, int pageSize) {
String sql = "select * from product limit ? , ?";
List<Product> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Product>(Product.class), currentPage, pageSize);
return list;
}
@Override
public int selectCountProduct() {
String sql = "select count(*) from product";
return jdbcTemplate.queryForObject(sql, Integer.class);
}
}
第三步:写service层 获得一个分页的PageBean并且通过impl写入程序
package com.qn.jq.service;
import com.qn.jq.daomain.PageBean;
import com.qn.jq.daomain.Product;
import java.util.List;
/**
* @author Lizhenye
* @date 2019/7/30 20:17
*/
public interface FindAllProductByPage {
//写一个获取PageBean的方法
PageBean<Product> findAllPageBean(int currentPage,int pageSize);
}
impl实现Bean的添加
package com.qn.jq.service.impl;
import com.qn.jq.dao.impl.ProductDaoImpl;
import com.qn.jq.daomain.PageBean;
import com.qn.jq.daomain.Product;
import com.qn.jq.service.FindAllProductByPage;
import java.util.List;
/**
* @author Lizhenye
* @date 2019/7/30 20:20
*/
public class FindAllProductImpl implements FindAllProductByPage {
@Override
public PageBean<Product> findAllPageBean(int currentPage, int pageSize) {
PageBean<Product> productPageBean = new PageBean<Product>();
productPageBean.setCurrentPage(currentPage);
productPageBean.setList(new ProductDaoImpl().selectList((currentPage-1)*pageSize,pageSize));
productPageBean.setPageSize(pageSize);
productPageBean.setTotalCount(new ProductDaoImpl().selectCountProduct());
productPageBean.setTotalPage((productPageBean.getTotalCount()%productPageBean.getPageSize())==0?(productPageBean.getTotalCount()/productPageBean.getPageSize()):(productPageBean.getTotalCount()/productPageBean.getPageSize())+1);
return productPageBean;
}
}
第四步写servlet
package com.qn.jq.web;
import com.qn.jq.daomain.PageBean;
import com.qn.jq.daomain.Product;
import com.qn.jq.service.FindAllProductByPage;
import com.qn.jq.service.impl.FindAllProductImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Lizhenye
* @date 2019/7/30 20:25
*///@javax.servlet.annotation.WebServlet(name = "FindAllByPageServlet")
@WebServlet("/FindAllByPageServlet")
public class FindAllByPageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "text/html;charset=UTF-8");
String currentPage = request.getParameter("currentPage");
if ("".equals(currentPage) || currentPage == null) {
currentPage = "1";
}
PageBean<Product> pageBean = new FindAllProductImpl().findAllPageBean(Integer.parseInt(currentPage), 5);
System.out.println(pageBean);
request.setAttribute("pb",pageBean);
request.getRequestDispatcher("/product_list.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
最后我们在jsp页面上显示的数据操作
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>会员登录</title>
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
<script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<!-- 引入自定义css文件 style.css -->
<link rel="stylesheet" href="css/style.css" type="text/css" />
<style>
body {
margin-top: 20px;
margin: 0 auto;
width: 100%;
}
.carousel-inner .item img {
width: 100%;
height: 300px;
}
</style>
</head>
<body>
<!-- 引入header.jsp -->
<jsp:include page="/header.jsp"></jsp:include>
<div class="row" style="width: 1210px; margin: 0 auto;">
<div class="col-md-12">
<ol class="breadcrumb">
<li><a href="#">首页</a></li>
</ol>
</div>
<c:forEach items="${list.list}" var="product" varStatus="p" >
<div class="col-md-2" style="height:240px ">
<a href="product_info.htm">
<img src="${product.pimage}"
width="170" height="170" style="display: inline-block;">
</a>
<p>
<a href="product_info.html" style='color: green'>${product.pname}</a>
</p>
<p>
<font color="#FF0000">商城价:¥${product.shop_price}</font>
</p>
</div>
</c:forEach>
</div>
<!--分页 -->
<div style="width: 380px; margin: 0 auto; margin-top: 50px;">
<ul class="pagination" style="text-align: center; margin-top: 10px;">
<li class="disabled"><a href="${pageContext.request.contextPath}/ProductByPageServlet?currentPage=${list.currentPage-1}" aria-label="Previous"><span
aria-hidden="true">«</span></a></li>
<c:forEach begin="1" end="${list.totalPage}" var="i">
<c:if test="${list.currentPage==i}">
<li class="active">
</c:if>
<c:if test="${list.currentPage!=i}">
<li >
</c:if>
<a href="${pageContext.request.contextPath}/ProductByPageServlet?currentPage=${i}">${i}</a></li>
</c:forEach>
<li><a href="${pageContext.request.contextPath}/ProductByPageServlet?currentPage=${list.currentPage+1}" aria-label="Next"> <span aria-hidden="true">»</span>
</a></li>
</ul>
</div>
<!-- 分页结束 -->
<!--商品浏览记录-->
<div
style="width: 1210px; margin: 0 auto; padding: 0 9px; border: 1px solid #ddd; border-top: 2px solid #999; height: 246px;">
<h4 style="width: 50%; float: left; font: 14px/30px 微软雅黑">浏览记录</h4>
<div style="width: 50%; float: right; text-align: right;">
<a href="">more</a>
</div>
<div style="clear: both;"></div>
<div style="overflow: hidden;">
<ul style="list-style: none;">
<li
style="width: 150px; height: 216; float: left; margin: 0 8px 0 0; padding: 0 18px 15px; text-align: center;"><img
src="products/1/cs10001.jpg" width="130px" height="130px" /></li>
</ul>
</div>
</div>
<!-- 引入footer.jsp -->
<jsp:include page="/footer.jsp"></jsp:include>
</body>
</html>