jsp+mysql实现网页的分页查询

好的。要详细讲解“jsp+mysql实现网页的分页查询”的完整攻略,需要了解以下几个步骤。

第一步:建立数据库

首先,在mysql中建立我们需要的数据库,并创建一个表来存储数据。例如,创建一个学生表students,表中包括学号、姓名、性别、年龄等字段。

表的创建语句如下:

CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `sex` varchar(2) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二步:编写jsp页面

接着,需要编写一个jsp页面来实现网页的分页查询。同时,还需要引入mysql的jdbc驱动包。

下面是一个简单的示例,实现了从students表中分页查询学生信息。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>分页查询</title>
</head>
<body>
    <%
        // 引入mysql的jdbc驱动包
        Class.forName("com.mysql.jdbc.Driver");

        // 连接数据库
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, user, password);

        // 获取请求参数
        int page = Integer.parseInt(request.getParameter("page"));
        int pageSize = Integer.parseInt(request.getParameter("pageSize"));

        // 查询数据
        String sql = "SELECT * FROM students LIMIT ?, ?";
        PreparedStatement pst = conn.prepareStatement(sql);
        pst.setInt(1, (page - 1) * pageSize);
        pst.setInt(2, pageSize);
        ResultSet rs = pst.executeQuery();

        // 遍历查询结果并输出
        while (rs.next()) {
            out.println("学号:" + rs.getInt("id") + ",姓名:" + rs.getString("name") + ",性别:" + rs.getString("sex") + ",年龄:" + rs.getInt("age") + "<br/>");
        }
        rs.close();
        pst.close();
        conn.close();
    %>

    <hr/>

    <% 
        // 计算总页数
        int totalCount = 50;
        int totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
    %>
    <%
        // 输出分页信息
        for (int i = 1; i <= totalPage; i++) {
            if (page == i) {
                out.println(i);
            } else {
                out.println("<a href='?page=" + i + "&pageSize=" + pageSize +"'>" + i + "</a>");
            }
            out.print(" ");
        }
    %>
</body>
</html>

上述代码中,我们首先引入mysql的jdbc驱动包,并使用DriverManager类连接我们建立的test数据库。然后获取请求参数pagepageSize,并使用PreparedStatement类执行带有分页参数的查询语句,将查询到的结果循环输出到网页上。最后根据总记录数和每页显示的记录数,计算出总页数,将页码信息输出到网页上。

第三步:启动tomcat

最后,将编写好的jsp页面复制到tomcat服务器的webapps目录下,并启动tomcat服务器。在浏览器中输入http://localhost:8080/分页查询/index.jsp,即可查看分页查询效果。

另外,我们再给出一个示例来更好地理解这个过程。在这个示例中,我们将以上的jsp页面改为使用servlet实现分页查询。

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 引入mysql的jdbc驱动包
        try {
            Class.forName("com.mysql.jdbc.Driver");

            // 连接数据库
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            Connection conn = DriverManager.getConnection(url, user, password);

            // 获取请求参数
            int page = Integer.parseInt(request.getParameter("page"));
            int pageSize = Integer.parseInt(request.getParameter("pageSize"));

            // 查询数据
            String sql = "SELECT * FROM students LIMIT ?, ?";
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setInt(1, (page - 1) * pageSize);
            pst.setInt(2, pageSize);
            ResultSet rs = pst.executeQuery();

            // 将查询结果放入request中,转发到jsp页面进行展示
            request.setAttribute("students", rs);
            request.getRequestDispatcher("/index.jsp").forward(request, response);

            rs.close();
            pst.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们修改了代码结构,将所有的查询操作和输出操作放到了doGet方法中,并在查询结果之后将结果放入了request的属性中,使用request对象实现了请求转发。由于servlet不直接输出html页面,因此我们还需要添加一个index.jsp页面用于展示查询结果。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>分页查询</title>
</head>
<body>
    <%
        // 输出查询结果
        ResultSet rs = (ResultSet) request.getAttribute("students");
        while (rs.next()) {
            out.println("学号:" + rs.getInt("id") + ",姓名:" + rs.getString("name") + ",性别:" + rs.getString("sex") + ",年龄:" + rs.getInt("age") + "<br/>");
        }
        rs.close();
    %>
    <hr/>

    <% 
        // 计算总页数
        int totalCount = 50;
        int totalPage = (totalCount % pageSize == 0) ? (totalCount / pageSize) : (totalCount / pageSize + 1);
    %>
    <%
        // 输出分页信息
        for (int i = 1; i <= totalPage; i++) {
            if (page == i) {
                out.println(i);
            } else {
                out.println("<a href='?page=" + i + "&pageSize=" + pageSize +"'>" + i + "</a>");
            }
            out.print(" ");
        }
    %>
</body>
</html>

在这个jsp页面中,我们从request对象中获取查询结果,并将查询结果输出到网页上。由于查询结果被放在结果集中,因此需要使用rs.next()方法进行遍历。与之前的示例相同,我们计算了总页数,并在页面中输出了分页信息。

通过以上的两个示例,我们可以更好地理解分页查询的实现过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp+mysql实现网页的分页查询 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • c#使用S22.Imap收剑灵激活码邮件代码示例(imap收邮件)

    c#是一种广泛应用于Windows平台开发的高级编程语言,S22.Imap是一个.NET实现的轻量级IMAP客户端,用于与IMAP邮件服务器进行交互操作。本文将详细讲解如何使用S22.Imap收取邮件,特别是在收取剑灵激活码邮件时的注意事项及代码示例。 收取剑灵激活码邮件的注意事项 剑灵是由韩国NCSoft开发的一款热门游戏,激活码是该游戏玩家兑换游戏物品的…

    Java 2023年5月19日
    00
  • java使用计算md5校验码方式比较两个文件是否相同

    计算MD5校验码是一种常用的文件完整性校验方式。在Java中,使用Java加密扩展(JCE)提供的MessageDigest类来计算MD5校验码,比较两个文件是否相同可以参考以下步骤: 1.引入JCE 首先需要在Java代码中引入JCE扩展包,可以在官网下载或在Maven中添加依赖: pom.xml依赖: <dependency> <gro…

    Java 2023年6月15日
    00
  • 关于Java 获取时间戳的方法

    关于Java获取时间戳的方法有很多种,这里主要介绍两种比较常用的方法。 方法一:使用System类的currentTimeMillis()方法 long timestamp = System.currentTimeMillis(); System类是Java的一个内置类,其中的currentTimeMillis()方法返回的是当前时间距离1970年1月1日0…

    Java 2023年5月20日
    00
  • 基于php缓存的详解

    下面是基于PHP缓存的完整攻略: 什么是PHP缓存? PHP缓存是一种将PHP脚本解释成二进制代码并缓存在内存或者硬盘中,以便下次直接使用缓存结果的机制。由于PHP代码的解析、编译和执行比较耗时,所以使用缓存机制可以大大提高PHP程序的运行效率和响应速度。 常用的PHP缓存方式 1. APC缓存 APC(Alternative PHP Cache)是PHP官…

    Java 2023年6月16日
    00
  • 高并发场景下的 HttpClient 优化,QPS 大大提升!

    HttpClient优化思路: 池化 长连接 httpclient和httpget复用 合理的配置参数(最大并发请求数,各种超时时间,重试次数) 异步 6、多读源码 1.背景 我们有个业务,会调用其他部门提供的一个基于http的服务,日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去,就看了一下业务代码,并做了一些优化,记录在这里…

    Java 2023年5月8日
    00
  • 解析jdbc处理oracle的clob字段的详解

    解析jdbc处理oracle的clob字段的详解 在使用jdbc连接oracle数据库的过程中,遇到clob字段时可能会遇到一些问题。本文将介绍如何正确地使用jdbc处理oracle的clob字段。 问题描述 当使用jdbc连接oracle数据库并读取clob字段时,可能会遇到以下问题: 读取到的clob字段大小不对,可能是因为jdbc默认只读取clob字段…

    Java 2023年6月16日
    00
  • springboot集成spark并使用spark-sql的示例详解

    下面我来为您详细讲解“springboot集成spark并使用spark-sql的示例详解”的完整攻略。 简介 首先,需要了解一下Spring Boot和Spark以及Spark SQL的概念: Spring Boot:是一种创建独立的、基于Spring的应用程序的简便方式。它简化了Spring应用程序的初始搭建和开发过程,使开发人员能够更快地构建出高质量、…

    Java 2023年5月19日
    00
  • Java Web中Ajax技术使用方法介绍

    JavaWeb中Ajax技术使用方法介绍 什么是Ajax Ajax全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML。 在Java Web中,Ajax可以让前端页面异步地向后台Java Servlet/Controller发送请求,获取响应数据,更新页面的部分内容,从而提升用户交互的体验。 使用Ajax…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部