Web - 分頁查詢(limit).
阿新 • • 發佈:2018-11-19
分頁查詢: 每頁顯示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>