最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例

 更新時(shí)間:2019年12月25日 09:05:40   作者:RooK13  
這篇文章主要介紹了JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

分頁的分類

分頁的實(shí)現(xiàn)分為真分頁和假分頁兩種。

1.真分頁(物理分頁):

實(shí)現(xiàn)原理: SELECT * FROM xxx [WHERE...] LIMIT ?, 10;

第一個(gè)參數(shù)是開始數(shù)據(jù)的索引位置

10是要查詢多少條數(shù)據(jù),即每頁顯示的條數(shù)

優(yōu)點(diǎn): 不會(huì)造成內(nèi)存溢出

缺點(diǎn): 翻頁的速度比較慢

2.假分頁(邏輯分頁):

實(shí)現(xiàn)原理: 一次性將所有的數(shù)據(jù)查詢出來放在內(nèi)存之中,每次需要查詢的時(shí)候就直接從內(nèi)存之中去取出相應(yīng)索引區(qū)間的數(shù)據(jù)

優(yōu)點(diǎn): 分頁的速度比較快

缺點(diǎn): 可能造成內(nèi)存溢出

分頁的一些術(shù)語:

  • -- 數(shù)據(jù)總條數(shù): totalCount : select count(1) from t_user;
  • -- 每頁顯示條數(shù):pageSize
  • -- 總頁數(shù):totalPage
  • -- 當(dāng)前頁:currPage
  • -- 起始索引: startIndex

-- 通過當(dāng)前頁碼查詢第幾頁的數(shù)據(jù)

select * from t_user limit 0, 5; -- 頁碼 1
select * from t_user limit 5, 5; -- 頁碼 2
select * from t_user limit 10, 5; -- 頁碼 3

-- 公式:startIndex = (currPage - 1) * pageSize

-- 計(jì)算一共有多少頁

-- 方法一:result = totalCount%pageSize,如果余數(shù)result為0,

-- totalPage = totalCount / pageSize

-- 如果余數(shù)result不為0,

-- totalPage = totalCount / pageSize + 1;

-- 方法二:totalPage = (totalCount + pageSize - 1) / pageSize

Pageing工具類

public class PaginationBean<T> {
  
  private List<T> dataList;
  
  private int currPage;
  
  private int totalPage;

  public List<T> getDataList() {
    return dataList;
  }

  public void setDataList(List<T> dataList) {
    this.dataList = dataList;
  }

  public int getCurrPage() {
    return currPage;
  }

  public void setCurrPage(int currPage) {
    this.currPage = currPage;
  }

  public int getTotalPage() {
    return totalPage;
  }

  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }
}

Servlet

@WebServlet("/showUserList")
public class ShowUserListServlet extends HttpServlet implements Servlet {
  
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String operation = request.getParameter("operation");
    String currPageStr = request.getParameter("currPage");
    int currPage = 0;
    
    IUserService userSevice = new UserServiceImpl();
    int totalPage = userSevice.getTotalPage();
    
    if ("首頁".equals(operation) || operation == null || currPageStr == null || currPageStr.length() == 0) {
      
      currPage = 1;
    } else if ("上一頁".equals(operation)) {
      
      currPage = Integer.parseInt(currPageStr) - 1;
      if (currPage <= 0) {
        currPage = 1;
      }
    } else if ("下一頁".equals(operation)) {
      
      currPage = Integer.parseInt(currPageStr) + 1;
      if (currPage >= totalPage) {
        currPage = totalPage;
      }
    } else {
      
      currPage = totalPage;
    }
    
    List<TestUserBean> userList = userSevice.getUserListByCurrPage(currPage);
    
    PaginationBean<TestUserBean> pageBean = new PaginationBean<TestUserBean>();
    pageBean.setDataList(userList);
    pageBean.setCurrPage(currPage);
    pageBean.setTotalPage(totalPage);
    
    request.setAttribute("page", pageBean);
    
    request.getRequestDispatcher("/userList.jsp").forward(request, response);
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }

}

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%-- 引入JSTL --%>  
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
  table {
    border-collapse: collapse;
  }
</style>
</head>
<body>
  <table border="1">
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>密碼</th>
      <th>身份證號(hào)</th>
    </tr>
    <c:forEach items="${page.dataList }" var="user">
      <tr>
        <td>${user.id }</td>
        <td>${user.name }</td>
        <td>${user.pwd }</td>
        <td>${user.idCard }</td>
      </tr>
    </c:forEach>
  </table>
  <span>第${page.currPage }頁/共${page.totalPage }頁</span>
  <br>
  <br>
  <form action="showUserList" method="get">
    <input type="submit" name="operation" value="首頁">
    <input type="submit" name="operation" value="上一頁">
    <input type="submit" name="operation" value="下一頁">
    <input type="submit" name="operation" value="尾頁">
    
    <input type="hidden" name="currPage" value="${page.currPage }">
  </form>
</body>
</html>

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java并發(fā)編程關(guān)鍵字volatile保證可見性不保證原子性詳解

    java并發(fā)編程關(guān)鍵字volatile保證可見性不保證原子性詳解

    這篇文章主要為大家介紹了java并發(fā)編程關(guān)鍵字volatile保證可見性不保證原子性詳解,文中附含詳細(xì)示例說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Lambda表達(dá)式下訪問外部變量問題

    Lambda表達(dá)式下訪問外部變量問題

    這篇文章主要介紹了Lambda表達(dá)式下訪問外部變量問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring中Bean初始化和銷毀的方式總結(jié)

    Spring中Bean初始化和銷毀的方式總結(jié)

    這篇文章主要為大家整理了Spring中Bean初始化和銷毀的多種方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2023-04-04
  • Java并發(fā)編程之線程中斷

    Java并發(fā)編程之線程中斷

    這篇文章主要介紹了Java并發(fā)編程線程中斷,java線程中斷是一種線程間的協(xié)作模式,通過設(shè)置線程的中斷標(biāo)志并不能直接終止該線程的運(yùn)行,而是被中斷的線程根據(jù)中斷狀態(tài)自行處理,需要的朋友可以參考一下
    2021-09-09
  • SpringBoot集成WebSocket的兩種方式(JDK內(nèi)置版和Spring封裝版)

    SpringBoot集成WebSocket的兩種方式(JDK內(nèi)置版和Spring封裝版)

    這篇文章主要介紹了SpringBoot集成WebSocket的兩種方式,這兩種方式為JDK內(nèi)置版和Spring封裝版,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 使用Idea或Datagrip導(dǎo)入excel數(shù)據(jù)的方法

    使用Idea或Datagrip導(dǎo)入excel數(shù)據(jù)的方法

    這篇文章主要介紹了使用Idea或Datagrip導(dǎo)入excel數(shù)據(jù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Spring Boot配置過濾器的2種方式示例

    Spring Boot配置過濾器的2種方式示例

    這篇文章主要給大家介紹了關(guān)于Spring Boot配置過濾器的2種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java中的轉(zhuǎn)義字符介紹

    java中的轉(zhuǎn)義字符介紹

    普通的轉(zhuǎn)義字符序列和八進(jìn)制轉(zhuǎn)義字符都比Unicode轉(zhuǎn)義字符要好得多,因?yàn)榕cUnicode轉(zhuǎn)義字符不同,轉(zhuǎn)義字符序列是在程序被解析為各種符號(hào)之后被處理的
    2013-09-09
  • springcloud整合到項(xiàng)目中無法啟動(dòng)報(bào)錯(cuò)Failed to start bean 'eurekaAutoServiceRegistration'

    springcloud整合到項(xiàng)目中無法啟動(dòng)報(bào)錯(cuò)Failed to start bean&n

    這篇文章主要介紹了springcloud整合到項(xiàng)目中無法啟動(dòng)報(bào)錯(cuò)Failed to start bean 'eurekaAutoServiceRegistration'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • IDEA中安裝和使用Lombok插件的方法

    IDEA中安裝和使用Lombok插件的方法

    Lombok是一個(gè)可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的工具,通過使用對(duì)應(yīng)的注解,可以在編譯源碼的時(shí)候生成對(duì)應(yīng)的方法,本文重點(diǎn)給大家介紹IDEA中安裝和使用Lombok插件的方法,感興趣的朋友一起看看吧
    2021-06-06

最新評(píng)論

济源市| 平和县| 长宁县| 射洪县| 清涧县| 拜泉县| 高密市| 揭阳市| 南岸区| 揭阳市| 哈尔滨市| 香港 | 台湾省| 绥江县| 柞水县| 维西| 威远县| 泰安市| 庄河市| 丁青县| 岳池县| 广灵县| 同仁县| 定远县| 德庆县| 柳林县| 湘阴县| 霸州市| 盐亭县| 江川县| 股票| 桐城市| 策勒县| 古浪县| 光泽县| 吉隆县| 楚雄市| 辉县市| 汝州市| 扎赉特旗| 隆回县|