javaweb 最簡單的分頁技術


原文來自於https://www.cnblogs.com/xwlych/p/6017833.html

個人由加了一點注釋,他的代碼我運行不起來,弄了好一會

bean包  User.java

package bean;

public class User {
    private String username;
    private String password;
    private String name;
    public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
    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;
    }
    
}

  PageServlet.java

package com; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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 javax.servlet.http.HttpSession; import bean.User; /** * Servlet implementation class PageServlet */ @WebServlet("/PageServlet") public class PageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ArrayList<User> list = new ArrayList<User>();//這個應該理解吧自定義數組對象[泛型] // 在這里我不再連接數據庫而是用虛擬的數據進行測試效果,小伙伴可以連接數據庫查詢到之后返回一個list
            for (int i = 1; i < 7; i++) { User user1 = new User(); user1.setUsername("" + i + "個用戶名"); user1.setPassword("" + i + "密碼"); user1.setName("" + i + "名字"); list.add(user1); } HttpSession session =request.getSession();//獲取session對象 // 將數據存到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 = 6;//這個是總頁數,大家可以數據庫查詢獲得 // 在實際開發中我們的總頁數可以根據sql語句得到查詢到的總條數,然后用總條數除每頁的條數得到總頁數
            session.setAttribute("countPage", countPage); request.getRequestDispatcher("index.jsp").forward(request, response);//帶參數的重定向
 } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub
 doGet(request, response); } }

 

index.jsp

  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在此處插入標題</title>
</head>

<body>
<!-- 這個是jstl 表達式和EL表達式,大家可以去下一個jstl jar包 復制到 web-inf目錄下(eclipse) 然后包含 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>這個頭文件 至於語法我不懂 這個foreach要寫在body
下面,要不循環不出來,因為我寫了一個大的報表(如果只把這個foreach 放在我寫的表格table前面 無法循環 ,原因不知)下面的
begin="${(pageNos-1)*1 為開始頁數 和 end="${pageNos*1-1}"結束頁數,我這里是每頁顯示一個,如果大家要顯示多個更改此代碼
例如兩個的話begin="${(pageNos-1)*2 }"  end="${pageNos*2-1}" 嗯嗯那沒太注意算法,不求甚解吧哈哈哈-->

    <c:forEach items="${userList}" var="user" begin="${(pageNos-1)*1 }"
        end="${pageNos*1-1}"> <!-- 這里是控制每頁顯示的個數 -->
        <center>
            <div>${user.username}</div>
        </center>
        <center>
            <div>${user.password}</div>
            <div>${user.name}</div>
        </center>
    </c:forEach>
    <center>
    <c:if test="${pageNos>1 }"> <!-- 這里是一個判斷你頁數是不是大於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" method="get"><!-- 這里建立一個表單提交到服務器 -->
<h4 align="center">共${countPage}頁  
<input type="text" value="${pageNos}" name="pageNos" size="1">頁
<input type="submit" value="go">
</h4>
</form>
  </body>
</html>

 一定注意你運行的時候要從servlet運行 就是點中你的servlet文件運行從服務器運行,要不會報錯的,原因是,我覺得你們懂吧!....要不前台會報錯的...自己想吧,

一定要下載jstl 包 並且包含頭文件 --------------上面有解釋

 

還有那個jsp頁面 把我的這個注釋刪了運行---要不報錯----一定刪了啊啊啊  注釋如下:

<!-- 這個是jstl 表達式和EL表達式,大家可以去下一個jstl jar包 復制到 web-inf目錄下(eclipse) 然后包含 <%//@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>這個頭文件 至於語法我不懂 這個foreach要寫在body
下面,要不循環不出來,因為我寫了一個大的報表(如果只把這個foreach 放在我寫的表格table前面 無法循環 ,原因不知)下面的
begin="${(pageNos-1)*1 為開始頁數 和 end="${pageNos*1-1}"結束頁數,我這里是每頁顯示一個,如果大家要顯示多個更改此代碼
例如兩個的話begin="${(pageNos-1)*2 }" end="${pageNos*2-1}" 嗯嗯那沒太注意算法,不求甚解吧哈哈哈-->

 

運行截圖:

 

代碼結構:

代碼打包下載:鏈接: https://pan.baidu.com/s/1uednZQBmR_AVKbGUw-mIIA 密碼: ndwa  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM