目錄
一、實作分頁查詢的核心sql語句
二、程式碼實作
三、運行結果
首頁 資料庫 mysql教程 如何用jsp+mysql實現網頁的分頁查詢

如何用jsp+mysql實現網頁的分頁查詢

May 30, 2023 pm 03:58 PM
mysql jsp

一、實作分頁查詢的核心sql語句

(1)查詢資料庫的記錄總數的sql語句:

select count(*) from +(表名);

(2)每次查詢的記錄數的sql語句:

其中:0是搜尋的索引,2是每次找的條數。

select * from 表名 limit 0,2;

二、程式碼實作

在上一篇中,我已經介紹了DBconnection類別和Author物件類,前者用於取得資料庫連接,後者用於表示作者物件。這兩個類別的程式碼點擊連接查看。點擊連結以查看 DBconnection 類別和 Author 物件類別

(1)登入頁面:index.jsp。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
    <a href="AuthorListPageServlet">用户列表分页查询</a>
</body>
</html>

(2)顯示頁面:userlistpage.jsp。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>查询页面</title>
</head>
<body>
<table border="1">
  <tr>
    <td>编号</td>
    <td>名称</td>
    <td>价格</td>
    <td>数量</td>
    <td>日期</td>
    <td>风格</td>
  </tr>
  <c:forEach items="${pageBean.list}" var="author">
  <tr>
    <td>${author.id}</td>
    <td>${author.name }</td>
    <td>${author.price }</td>
    <td>${author.num }</td>
    <td>${author.dates}</td>
    <td>${author.style}</td>
  </tr>
  </c:forEach>
</table>
<c:if test="${ pageBean.record>0}">
<div>
      
      <c:if test="${pageBean.currentPage <= 1}">
      <span>首页</span>
      <span>上一页</span>
      <a href ="AuthorListPageServlet?currPage=${pageBean.currentPage + 1 }">下一页</a>
      <a href ="AuthorListPageServlet?currPage=${pageBean.totalPage }">尾页</a>
      </c:if>
      
      <c:if test="${pageBean.currentPage > 1 && pageBean.currentPage < pageBean.totalPage  }">
       <a href ="AuthorListPageServlet?currPage=1">首页</a>
      <a href ="AuthorListPageServlet?currPage=${pageBean.currentPage - 1 }">上一页</a>
      <a href ="AuthorListPageServlet?currPage=${pageBean.currentPage + 1 }">下一页</a>
      <a href ="AuthorListPageServlet?currPage=${pageBean.totalPage }">尾页</a>
      </c:if>
     
     <c:if test="${ pageBean.currentPage >= pageBean.totalPage}">
      <a href ="AuthorListPageServlet?currPage=1">首页</a>
      <a href ="AuthorListPageServlet?currPage=${pageBean.currentPage - 1 }">上一页</a>
     <span>下一页</span>
     <span>尾页</span>
     </c:if>
</div>
</c:if>
</body>
</html>

(3)功能實作:AuthorDao.java。

package com.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.entity.Author;

public class AuthorDao {
    
     public  Author check(String username ,int  password ) {
         
         Author obj = null ;
         try {
            DBConnection db = new DBConnection();
            //获取数据库连接
            Connection conn = db.getConn();
            
            String sql="select *from furnitures where name = ? and id = ?";
            
            PreparedStatement ps=conn.prepareStatement(sql);
            //设置用户名和密码作为参数放入sql语句
            ps.setString(1,username);
            ps.setInt(2,password);
            //执行查询语句
            ResultSet rs = ps.executeQuery();
            //用户名和密码正确,查到数据  欧式风格  茶几
            if(rs.next()) {
                obj = new Author();
                obj.setId(rs.getInt(1));
                obj.setName(rs.getString(2));
                obj.setPrice(rs.getInt(3));
                obj.setNum(rs.getInt(4));
                obj.setDates(rs.getString(5));
                obj.setStyle(rs.getString(6));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         return obj;
     }
     /**
      * 用户列表信息查询
      * @return
      */
     public List<Author> queryAuthorList(){
         Author obj = null ;
         List<Author> list = new ArrayList<Author>();
         try {
            DBConnection db = new DBConnection();
            //获取数据库连接
            Connection conn = db.getConn();
            
            String sql="select *from furnitures";
            
            PreparedStatement ps=conn.prepareStatement(sql);
    
            //执行查询语句
            ResultSet rs = ps.executeQuery();
            //用户名和密码正确,查到数据  欧式风格  茶几
            //循环遍历获取用户信息
            while(rs.next()) {
                
                obj = new Author();
                obj.setId(rs.getInt(1));
                obj.setName(rs.getString(2));
                obj.setPrice(rs.getInt(3));
                obj.setNum(rs.getInt(4));
                obj.setDates(rs.getString(5));
                obj.setStyle(rs.getString(6));
                //将对象加入list里边
                list.add(obj);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         return list;
     }
     
     
     /**
      * 查询用户表总记录数
      * @return
      */
     public int queryUserListCount() {
         DBConnection db;
        try {
             db = new DBConnection();
             Connection conn = db.getConn();
             String sql = "select count(*) from furnitures";
             
             PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery();
             
             
             if(rs.next()) {
                 return rs.getInt(1);
             }
             
             
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
         return 0;
     }
     /**
      * 查询用户分页数据
      * @param pageIndex数据起始索引
      * @param pageSize每页显示条数
      * @return
      */
     public List<Author>queryUserListPage(int pageIndex,int pageSize){
         
         Author obj = null;
         List<Author> list = new ArrayList<Author>();
         
         try {
            Connection conn = new DBConnection().getConn();
            String sql = "select * from furnitures limit ?,?;";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setObject(1, pageIndex);
            ps.setObject(2,pageSize);
            
            ResultSet rs = ps.executeQuery();
            //遍历结果集获取用户列表数据
            
            while(rs.next()) {
                obj = new Author();
                
                obj.setId(rs.getInt(1));
                obj.setName(rs.getString(2));
                obj.setPrice(rs.getInt(3));
                obj.setNum(rs.getInt(4));
                obj.setDates(rs.getString(5));
                obj.setStyle(rs.getString(6));
                
                list.add(obj);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         return list;
     }
     /**
      * 用户新增
      * @param obj
      */
     public void add(Author obj) {
        
        try {
            
            DBConnection db = new DBConnection();
            //获取数据库连接
            Connection conn = db.getConn();
            
            String sql="insert into furnitures values(id,?,?,?,?,?)";
            
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setObject(1, obj.getName());
            ps.setObject(2, obj.getPrice());
            ps.setObject(3, obj.getNum());
            ps.setObject(4,obj.getDates());
            ps.setObject(5, obj.getStyle());
            
            //执行sql语句
           ps.execute();
           
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            
     }
     //删除用户
     public void del(int id) {
         try {
                
                DBConnection db = new DBConnection();
                //获取数据库连接
                Connection conn = db.getConn();
                
                String sql="delete from furnitures where id = ?";
                
                PreparedStatement ps=conn.prepareStatement(sql);
                
                ps.setObject(1, id);
                
                //执行sql语句
               ps.execute();
               
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
                
     }
    
}

(4)交互層:AuthorListPageServlet.java。

package com.servlet;

import java.io.IOException;
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 com.dao.AuthorDao;
import com.entity.Author;
import com.util.PageBean;

/**
 * Servlet implementation class AuthorListPageServlet
 */
@WebServlet("/AuthorListPageServlet")
public class AuthorListPageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AuthorListPageServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int pageSize = 2;
        AuthorDao ad = new AuthorDao();
        //总记录数
        int record = ad.queryUserListCount();
        //接收页面传入的页码
        String strPage = request.getParameter("currPage");
        int currPage = 1;//默认第一页
        if(strPage != null) {
            currPage = Integer.parseInt(strPage);
    
        }
        
        PageBean<Author> pb = new PageBean<Author>(currPage,pageSize,record);
        //查询某一页的结果集
        List<Author> list = ad.queryUserListPage(pb.getPageIndex(), pageSize);
        pb.setList(list);
        request.setAttribute("pageBean", pb);
        request.getRequestDispatcher("userlistpage.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);
    }

}

(5)工具類別:PageBean.java。作用是:取得結果集。

package com.util;

import java.util.List;

public class PageBean<T>{
    private int currentPage;//当前页码
    private int pageIndex;//数据起始索引
    private int pageSize;//每页条数
    
    
    private int record;//总记录数
    private int totalPage;//总页数
    
    private List<T>list;//每页显示的结果集
    /**
     * 构造方法初始化pageIndex和totalPage
     * @param currentPage
     * @param pageIndex
     * @param pageSize
     */
    public PageBean(int currentPage,int pageSize,int record) {
        
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.record = record;
        
        //总页数
        if(record % pageSize == 0) {
            //整除,没有多余的页
            this.totalPage = record / pageSize;
            
        }
        else {
            //有多余的数据,在增加一页
            this.totalPage = record / pageSize + 1;
        }
        
        //计算数据起始索引pageIndex
        if(currentPage < 1) {
            this.currentPage = 1;
        }
        else if(currentPage > this.totalPage) {
            this.currentPage = this.totalPage;
        }
        this.pageIndex = (this.currentPage -1)*this.pageSize;
    }
    
    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(int pageIndex) {
        this.pageIndex = pageIndex;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getRecord() {
        return record;
    }

    public void setRecord(int record) {
        this.record = record;
    }

    public int getTotalPage() {
        return totalPage;
    }

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

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
    
}

三、運行結果

(1)首頁:

如何用jsp+mysql實現網頁的分頁查詢

(2)中間頁:

如何用jsp+mysql實現網頁的分頁查詢

(3)尾頁:

如何用jsp+mysql實現網頁的分頁查詢

#

以上是如何用jsp+mysql實現網頁的分頁查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1602
29
PHP教程
1505
276
如何用PHP開發問答社區平台 PHP互動社區變現模式詳解 如何用PHP開發問答社區平台 PHP互動社區變現模式詳解 Jul 23, 2025 pm 07:21 PM

1.PHP開發問答社區首選Laravel MySQL Vue/React組合,因生態成熟、開發效率高;2.高性能需依賴緩存(Redis)、數據庫優化、CDN和異步隊列;3.安全性必須做好輸入過濾、CSRF防護、HTTPS、密碼加密及權限控制;4.變現可選廣告、會員訂閱、打賞、佣金、知識付費等模式,核心是匹配社區調性和用戶需求。

如何在PHP環境中設置環境變量 PHP運行環境變量添加說明 如何在PHP環境中設置環境變量 PHP運行環境變量添加說明 Jul 25, 2025 pm 08:33 PM

PHP設置環境變量主要有三種方式:1.通過php.ini全局配置;2.通過Web服務器(如Apache的SetEnv或Nginx的fastcgi_param)傳遞;3.在PHP腳本中使用putenv()函數。其中,php.ini適用於全局且不常變的配置,Web服務器配置適用於需要隔離的場景,putenv()適用於臨時性的變量。持久化策略包括配置文件(如php.ini或Web服務器配置)、.env文件配合dotenv庫加載、CI/CD流程中動態注入變量。安全管理敏感信息應避免硬編碼,推薦使用.en

如何用PHP開發商品推薦模塊 PHP推薦算法與用戶行為分析 如何用PHP開發商品推薦模塊 PHP推薦算法與用戶行為分析 Jul 23, 2025 pm 07:00 PM

收集用戶行為數據需通過PHP記錄瀏覽、搜索、購買等信息至數據庫,並清洗分析以挖掘興趣偏好;2.推薦算法選擇應根據數據特徵決定:基於內容、協同過濾、規則或混合推薦;3.協同過濾在PHP中可實現為計算用戶餘弦相似度、選K近鄰、加權預測評分並推薦高分商品;4.性能評估用準確率、召回率、F1值及CTR、轉化率並通過A/B測試驗證效果;5.冷啟動問題可通過商品屬性、用戶註冊信息、熱門推薦和專家評價緩解;6.性能優化手段包括緩存推薦結果、異步處理、分佈式計算與SQL查詢優化,從而提升推薦效率與用戶體驗。

如何用PHP開發AI智能表單系統 PHP智能表單設計與分析 如何用PHP開發AI智能表單系統 PHP智能表單設計與分析 Jul 25, 2025 pm 05:54 PM

選擇合適的PHP框架需根據項目需求綜合考慮:Laravel適合快速開發,提供EloquentORM和Blade模板引擎,便於數據庫操作和動態表單渲染;Symfony更靈活,適合複雜系統;CodeIgniter輕量,適用於對性能要求較高的簡單應用。 2.確保AI模型準確性需從高質量數據訓練、合理選擇評估指標(如準確率、召回率、F1值)、定期性能評估與模型調優入手,並通過單元測試和集成測試保障代碼質量,同時持續監控輸入數據以防止數據漂移。 3.保護用戶隱私需採取多項措施:對敏感數據進行加密存儲(如AES

如何用PHP搭建在線客服機器人 PHP智能客服實現技術 如何用PHP搭建在線客服機器人 PHP智能客服實現技術 Jul 25, 2025 pm 06:57 PM

PHP在智能客服中扮演連接器和大腦中樞角色,負責串聯前端輸入、數據庫存儲與外部AI服務;2.實現時需構建多層架構:前端接收用戶消息,PHP後端預處理並路由請求,先匹配本地知識庫,未命中則調用外部AI服務如OpenAI或Dialogflow獲取智能回复;3.會話管理由PHP寫入MySQL等數據庫,保障上下文連續性;4.集成AI服務需用Guzzle發送HTTP請求,安全存儲APIKey,做好錯誤處理與響應解析;5.數據庫設計需包含會話、消息、知識庫、用戶表,合理建索引、保障安全與性能,支撐機器人記憶

如何讓PHP容器支持自動構建 PHP環境持續集成CI配置方式 如何讓PHP容器支持自動構建 PHP環境持續集成CI配置方式 Jul 25, 2025 pm 08:54 PM

要讓PHP容器支持自動構建,核心在於配置持續集成(CI)流程。 1.使用Dockerfile定義PHP環境,包括基礎鏡像、擴展安裝、依賴管理和權限設置;2.配置GitLabCI等CI/CD工具,通過.gitlab-ci.yml文件定義build、test和deploy階段,實現自動構建、測試和部署;3.集成PHPUnit等測試框架,確保代碼變更後自動運行測試;4.使用Kubernetes等自動化部署策略,通過deployment.yaml文件定義部署配置;5.優化Dockerfile,採用多階段構

如何用PHP結合AI做視頻內容分析 PHP智能視頻標籤生成 如何用PHP結合AI做視頻內容分析 PHP智能視頻標籤生成 Jul 25, 2025 pm 06:15 PM

PHP结合AI做视频内容分析的核心思路是让PHP作为后端“胶水”,先上传视频到云存储,再调用AI服务(如GoogleCloudVideoAI等)进行异步分析;2.PHP解析返回的JSON结果,提取人物、物体、场景、语音等信息生成智能标签并存入数据库;3.优势在于利用PHP成熟的Web生态快速集成AI能力,适合已有PHP系统的项目高效落地;4.常见挑战包括大文件处理(用预签名URL直传云存储)、异步任务(引入消息队列)、成本控制(按需分析 预算监控)和结果优化(标签规范化);5.智能标签显著提升视

如何搭建獨立PHP任務容器環境 PHP定時腳本運行容器配置方法 如何搭建獨立PHP任務容器環境 PHP定時腳本運行容器配置方法 Jul 25, 2025 pm 07:27 PM

搭建獨立PHP任務容器環境可通過Docker實現,具體步驟如下:1.安裝Docker與DockerCompose作為基礎;2.創建獨立目錄存放Dockerfile、crontab文件;3.編寫Dockerfile定義PHPCLI環境並安裝cron及必要擴展;4.編寫crontab文件定義定時任務;5.編寫docker-compose.yml掛載腳本目錄並配置環境變量;6.啟動容器並驗證日誌。相比Web容器內執行定時任務,獨立容器具備資源隔離、環境純粹、穩定性強、便於擴展等優勢。為確保日誌與錯誤捕

See all articles