版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42986107/article/details/83119925
分页查询: 每页显示10条数据.
Servlet.java
@WebServlet("/findByPage")
public class PageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
// 初始页码数为第一页.
int pageNumber = 1;
// 获取带过来的页码参数 .
String pageNumber_str = request.getParameter("pageNumber");
if(pageNumber_str!=null){
pageNumber = Integer.parseInt(pageNumber_str);
}
// 每页显示的个数.
int pageSize = 10;
// 创建UserService对象 , 调用其方法.
UserService us = new UserService();
List<User> users = us.selectByPage(pageNumber,pageSize);
// 获取数据库中总条数.
int total = us.findTotal();
int totalPage = (int) Math.ceil(total*1.0/pageSize);
// 将数据放到域中.
request.setAttribute("user",users);
// 还需要将pageNumber 和 totalPage放在域中.
request.setAttribute("pageNumber",pageNumber);
request.setAttribute("totalPage",totalPage);
// i请求转发到list2.jsp页面.
request.getRequestDispatcher("/list2.jsp").forward(request,response);
}
}
UserDao.java
public class UserDao {
// 分页查询 limit
public List<User> selectByPage(int pageNumber, int pageSize) {
// 创建QueryRunner对象.
QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
// 创建sql语句.
String sql = "select * from user limit ?,? ";
// 执行sql
try {
return qr.query(sql,new BeanListHandler<>(User.class),(pageNumber-1)*pageSize,pageSize);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
// 查询数据库中的总条数.
public int findCount() {
// 创建QueryRunner对象.
QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
// 创建sql语句.
String sql = "select count(*) from user ";
// 执行sql
try {
return ((Long)qr.query(sql,new ScalarHandler())).intValue();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
list2.jsp
<div class="text-center">
<ul class="pagination pagination-lg">
<%-- 如果时第一页 --%>
<c:if test="${pageNumber==1}">
<li class="disabled">
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
</c:if>
<%-- 不是第一页. --%>
<c:if test="${pageNumber!=1}">
<li>
<a href="${ctx}/findByPage?pageNumber=${pageNumber-1}" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
</c:if>
<c:forEach begin="1" end="${totalPage}" var="n">
<%-- 是否是当前页 --%>
<c:if test="${n==pageNumber}">
<li class="active"><a href="javascript:;">${n}</a></li>
</c:if>
<%-- 不是当前页 --%>
<c:if test="${n!=pageNumber}">
<li><a href="${ctx}/findByPage?pageNumber=${n}">${n}</a></li>
</c:if>
</c:forEach>
<%-- 如果是最后一页 --%>
<c:if test="${pageNumber==totalPage}">
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</c:if>
<%-- 不是最后一页 点击的时候加1 --%>
<c:if test="${pageNumber!=totalPage}">
<li class="disabled">
<a href="${ctx}/findByPage?pageNumber=${pageNumber+1}" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</c:if>
</ul>
</div>