JavaWeb 簡單分頁的實現:
這次主要是講解一下通過登錄後對得到的數據進行分頁,首先我們新建一個登錄頁面login.jsp,因為我們主要學習一下分頁,所以登錄驗證的部分不再闡述,主要代碼如下:
<form action="pageServlet"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="text" name="password"><br> <input type="submit" value="提交"> </form>
首先建立實體類User.java並添加get和set方法:
public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }我們可以看到form表單是提交到pageServlet中,所以我們新建一個PageServlet,並在Servlet中獲取到數據,同時做一些分頁的準備,具體含義可以參照註釋理解,PageServlet代碼:
public class PageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<User> list = new ArrayList<User>(); // 在這裡我不再連接數據庫而是用虛擬的數據進行測試效果,小伙伴可以連接數據庫查詢到之後返回一個list for (int i = 1; i < 7; i++) { User user1 = new User(); user1.setUsername("第" + i + "個用戶名"); user1.setPassword("第" + i + "密碼"); list.add(user1); } HttpSession session = request.getSession(); // 將數據存到session中以便於在前台獲取session.setAttribute("userList", list); //獲取當前頁的頁數並轉為int類型,最終將數據存到session中int pageNos; if (request.getParameter("pageNos") == null || Integer.parseInt(request.getParameter("pageNos")) < 1) { pageNos = 1; } else { pageNos = Integer.parseInt(request.getParameter("pageNos")); } session.setAttribute("pageNos", pageNos); // 定義總頁數並存到session中int countPage = 3; // 在實際開發中我們的總頁數可以根據sql語句得到查詢到的總條數,然後用總條數除每頁的條數得到總頁數session.setAttribute("countPage", countPage); request.getRequestDispatcher("index.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }}在上述代碼中我們最終將轉發到index.jsp頁面,此時我們所有的數據都將顯示在index.jsp中,用JSTL和EL表達式獲取得到,index.jsp主要代碼如下:
<body> <c:forEach items="${userList}" var="user" begin="${(pageNos-1)*2 }" end="${pageNos*2-1}"> <center> <div>${user.username}</div> </center> <center> <div>${user.password}</div> </center> </c:forEach> <center> <c:if test="${pageNos>1 }"><a href="pageServlet?pageNos=1" >首頁</a><a href="pageServlet?pageNos=${pageNos-1 }">上一頁</a></c:if><c:if test="${pageNos <countPage }"><a href="pageServlet?pageNos=${pageNos+1 }">下一頁</a><a href="pageServlet?pageNos=${countPage }">末頁</a></c:if></center><form action="pageServlet"><h4 align="center">共${countPage}頁<input type="text" value="${pageNos}" name="pageNos" size="1">頁<input type="submit" value="go"></h4></form> </body>第二行中我們用<c:forEach >對session.setAttribute();中的內容進行獲取。注意,這裡我默認是每頁兩條數據,所以是(pageNos-1)*2,如果每頁N條數據則需將2改為N,當然N也可以從後台Servlet中獲取得到。
同時,因為我們在index.jsp中用了JSTL表達式,所以記得要導入引用:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
到這裡我們就完成了一個簡單的分頁,快去試試吧。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!