`

简洁Java JDBC 分页查询一个JSP搞定

阅读更多
<%@page import="java.io.IOException"%>
<%@page import="java.util.Properties"%>
<%@page import="res.HttpClientVisitTest"%>
<%@page import="java.io.InputStream"%>
<%@ page contentType="text/html; charset=utf-8" %> <%-- 设置页面编码格式 --%>
<%@ page import="java.sql.*" %>  <%-- 导入 SQL 包 --%>
<html>
<head>
  <title>分页显示</title>
  <style type="text/css">
   tab {
    border: 1px dotted #aaa;
   }
   td {
    border-top: 1px dotted #aaa;
   }
  </style>
</head>
<body>
  <center>
   <h1>服务器请求信息列表</h1>
   <hr />
   <br />
   <%
    request.setCharacterEncoding("utf-8");  // 统一编码格式为 GBK
   %>
   <%!
    final String jspUrl = "fenye.jsp";
   %>
   <%
    // 真分页:只是取出需要的数据并显示在页面上,是从程序的分离的角度划分的,分散了程序的负载,提升了程序的整体性能,性能较高。
    // 分页实现由业务程序和数据库分页函数协调配合共同完成。
    // 定义如下分页变量
    int lineSize = 10;  // 定义每页要显示的记录数
    int currentPage = 1;  // 定义当前是第几页
    int pageSize = 0;  // 总页数 = 总记录数 ÷ 每页显示的记录数
    int allRecorders = 27;
    String keyWord = null; // 查询关键字
   %>
   <%
    keyWord = request.getParameter("kw");  // 接收用户输入的关键字
    // 接收传过来的当前页
    try
    {
     currentPage = Integer.parseInt(request.getParameter("cp"));
    }
    catch(Exception e){}
   %>
   <%
   //本机服务器连接
    //final String DBDRIVER = "com.mysql.jdbc.Driver";  // MySQL 驱动类
    //final String DBURL = "jdbc:mysql://localhost:3306/test1?useUnicode=true&amp;characterEncoding=utf-8";  // 数据库地址
    //final String DBUSER = "root"; // 连接数据库的用户名
    //final String DBPASSWORD = "root"; // 连接数据库的密码
   
    //服务器数据库
    final String DBDRIVER = "com.mysql.jdbc.Driver";  // MySQL 驱动类
    Properties prop = null;
    InputStream is = HttpClientVisitTest.class
.getResourceAsStream("//config//config.properties");
prop = new Properties();
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
}
    //final String DBURL = "jdbc:mysql://218.206.179.114:3306/res?useUnicode=true&amp;characterEncoding=utf-8";  // 数据库地址
    final String DBURL = prop.getProperty("url");  // 数据库地址
    final String DBUSER = prop.getProperty("username"); // 连接数据库的用户名
    final String DBPASSWORD = prop.getProperty("password"); // 连接数据库的密码
    Connection conn = null;  // 建立与数据库连接的对象
   %>
   <%
    try
    {
     Class.forName(DBDRIVER);  // 注册 MySQL 驱动
     conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);  // URL地址,注册用户名,用户名密码
     PreparedStatement pstmt = null;  // 预处理
     String sql = null;
    if(keyWord == null || "".equals(keyWord))
   // if(true)
     {
      // 如果为空,则没有查询,表示查询全部
      sql = "SELECT COUNT(id) FROM res";  // 构建 SQL 语句s
     }
     else
     {
      sql = "SELECT COUNT(id) FROM res WHERE userid LIKE ? OR phone LIKE ?";  // 构建 SQL 语句
     }
     pstmt = conn.prepareStatement(sql) ; // 加载 SQL 语句到
     // 如果有查询关键字,则进行设置
     if(!(keyWord == null || "".equals(keyWord)))
     {
      pstmt.setString(1, "%" + keyWord + "%");
      pstmt.setString(2, "%" + keyWord + "%");
     }
     ResultSet rs = pstmt.executeQuery(); // 执行 SQL 语句
     if(rs.next())
     {
      allRecorders = rs.getInt(1);  // 取得表中总记录数
     }
     rs.close();  // 关闭结果集
     pstmt.close();  // 关闭预处理

     pageSize = (allRecorders + lineSize - 1) / lineSize; // 计算总页数

     if(keyWord == null || "".equals(keyWord))
     //if(true)
     {
      // // 如果为空,则没有查询,表示查询全部
      sql = "SELECT id,sessionid, userid, phone,email,status,resTime FROM res limit " + (currentPage - 1) * lineSize + "," + lineSize; 
     }
     else
     {
      sql = "SELECT id,sessionid, userid, phone,email,status,resTime FROM res WHERE userid LIKE ? OR phone LIKE ? LIMIT " + (currentPage - 1) * lineSize + "," + lineSize;
     }
     pstmt = conn.prepareStatement(sql) ; // 加载 SQL 语句到
     // 如果有查询关键字,则进行设置
     if(!(keyWord == null || "".equals(keyWord)))
     {
      pstmt.setString(1, "%" + keyWord + "%");
      pstmt.setString(2, "%" + keyWord + "%");
     }
     rs = pstmt.executeQuery(); // 执行 SQL 语句
   %>
     <script language="javaScript">
      function openPage(curPage)
      {
       document.spage.cp.value = curPage ;
       // alert(cupage) ;
       document.spage.submit() ;
      }
      function selOpenPage()
      {
       document.spage.cp.value = document.spage.selpage.value;
       document.spage.submit();
      }
     </script>
     <form name="spage" action="<%= jspUrl %>">
      输入查询的关键字:<input type="text" name="kw" value="<%= keyWord == null ? "" : keyWord %>" />
      <input type="submit" value="查询" />
      <br /><br />
   <%
     if(allRecorders > 0)
     {
   %>
      <input type="button" value="首页" onClick="openPage(1)" <%= currentPage == 1 ? "disabled" : "" %> />
      <input type="button" value="上一页" onClick="openPage(<%= currentPage - 1 %>)" <%= currentPage == 1 ? "disabled" : "" %> />
      <input type="button" value="下一页" onClick="openPage(<%= currentPage + 1 %>)" <%= currentPage == pageSize ? "disabled" : "" %> />
      <input type="button" value="尾页" onClick="openPage(<%= pageSize %>)" <%= currentPage == pageSize ? "disabled" : "" %> />
      <input type="hidden" name="cp" value="" />
      <font color="red" size="5"><%= currentPage %></font>
      /
      <font color="red" size="5"><%= pageSize %></font>
      跳转到
       <select name="selpage" onChange="selOpenPage()">
       <%
        for(int j = 1; j <= pageSize; j++)
        {
       %>
        <option value="<%= j %>" <%= currentPage == j ? "selected" : "" %>> <%= j %> </option>
       <%
        }
       %>
       </select>
      页
   <%
     }
   %>
     </form>
     <table width="80%" cellpadding="1" cellspacing="0">
      <tr align="center">
       <th>编号</th>
       <th>用户ID</th>
       <th>用户名</th>
       <th>电话</th>
       <th>Email</th>
       <th>请求状态</th>
        <th>请求时间</th>
      <!--   <th colspan="2">操作</th>-->
      </tr>
   <%
    int i = 0; // 判断是否有数据库的标记
    while(rs.next())
    {
     i++;
     int id = rs.getInt(1);
     String sessionid=rs.getString(2);
     if("".equals(sessionid) || null == sessionid){
     sessionid="无值";
     }
     String userid = rs.getString(3);
      if("".equals(userid) || null == userid){
     userid="无值";
     }
     String phone = rs.getString(4);
       if("".equals(phone) || null == phone){
     phone="无值";
     }
     String email = rs.getString(5);
        if("".equals(email) || null == email){
     email="无值";
     }
     String status = rs.getString(6);
        if("".equals(status) || null == status){
     status="无值";
     }
     Date resTime = rs.getDate(7);
    
   %>
     <tr align="center">
      <td><%= id %></td>
      <td><%= sessionid %></td>
      <td><%= userid %></td>
      <td><%= phone %></td>
      <td><%= email %></td>
      <td><%= status %></td>
      <td><%= resTime %></td>
   <!--    <td>更新</td>
      <td>删除</td> -->
     </tr>
   <%
    }
    rs.close();  // 关闭结果集
    pstmt.close();  // 关闭预处理
    if(i == 0)
    {
   %>
     <tr align="center">
      <td colspan="6">不存在数据! </td>
     </tr>
   <%
    }

   %>
     <table>
   <%
    }
    catch(Exception e)
    {
     out.println(e);
   %>
     <h2>程序出错啦!</h2>
   <%
    }
    finally
    {
     conn.close();
    }
   %>
  </center>
</body>
</html>
分享到:
评论

相关推荐

    JDBC分页查询(MySQL的)

    jdbc分页查询,利用mysql的limit实现分页查询。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    JavaWeb+JSP+Servlet+JDBC分页查询和查询后分页

    项目主体结构是dao+db+filter+pojo+servlet, 使用技术Servlet转发,代码中有注释帮助学者理解,数据库为MySQL资源...实现的数据库内容分页,查询分页,对初学者难点是根据get请求的中的url地址进行查询后的分页效果。

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    为了实现分页查询,我们可以创建一个专门的Page类,包含当前页数、每页记录数、总记录数等属性,以及获取和设置这些属性的方法。 接下来,我们探讨Oracle数据库中的分页查询。Oracle提供了ROWNUM伪列,可以用来限制...

    JavaWeb+JSP+Servlet+JDBC分页查询和查询后分页界面优化最终版

    在JavaWeb开发中,"JavaWeb+JSP+Servlet+JDBC分页查询和查询后分页界面优化"是一个常见的需求,特别是在构建大型的、数据密集型的学生管理系统中。这个主题涵盖了许多关键知识点,让我们逐一深入探讨。 首先,...

    java jdbc 分页

    以下是一个简单的Java JDBC分页实现步骤: 1. **建立数据库连接**:首先,我们需要使用`DriverManager.getConnection()`方法来建立与数据库的连接。确保已经添加了相应的JDBC驱动,并正确配置了数据库URL、用户名和...

    jdbc分页查询源码

    在给定的源码中,可能包含了一个封装好的分页查询工具类,这个类通常会有以下方法: - `queryByPage(Connection conn, String sql, int pageNum, int pageSize)`:接收数据库连接、基础SQL语句以及分页参数,返回...

    java jdbc 分页例子

    Java JDBC 分页查询是数据库操作中的常见需求,用于在大量数据中实现高效的页面导航。在这个小例子中,展示了如何使用JDBC进行分页查询。Java JDBC 提供了两种主要的分页方式:一种是通过 `absolute` 方法,另一种是...

    Java JDBC分页工具包

    一个用于支持JDBC分页的工具包,提供了一些封装好的JDBC操作方法,方便开发人员进行开发,提供了此工具包的API文档

    java基于原生的MySql的JDBC分页组件

    本篇将详细介绍如何基于原生的MySQL JDBC实现一个简单的分页组件,这对于初学者理解数据库操作和分页原理非常有帮助。 1. **JDBC基础**: JDBC是Java访问数据库的标准接口,它提供了连接数据库、执行SQL语句、处理...

    jsp分页JDBC实现

    在“JDBCPager”这个例子中,可能包含了一个名为`Pager.java`的类,该类封装了上述步骤,提供了一个分页接口供JSP页面调用。它可能有方法如`getPage(int pageNo, int pageSize)`,返回指定页码的数据,并通过参数...

    java多线程分页查询

    首先通过执行一个统计查询语句获取总的记录数,为后续的分页提供依据。 - **步骤2:设置页面信息**。根据总记录数计算出总页数等相关信息,并设置当前页面的起始索引和结束索引。 - **步骤3:查询当前页数据**。使用...

    Java jdbc分页工具类

    java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...

    jsp jdbc分页原代码

    **JSP与JDBC分页实现详解** ...总的来说,JSP和JDBC的分页实现涉及到SQL查询、数据库连接管理、Java集合的使用以及前端页面的交互。通过熟练掌握这些技能,开发者可以构建出高效、友好的数据展示界面。

    jdbc+serlvet分页查询代码

    【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...

    java+jdbc分页标签

    回到给定的压缩包文件"KevinbTagApp",这很可能是一个包含Java分页标签实现的项目。可能包含以下组件: 1. `PaginationTag.java`: 分页标签类,实现了自定义标签的逻辑。 2. `web.xml`: 应用的部署描述符,配置了...

    jdbc 分页 sql语句

    在数据库操作中,分页查询是非常常见且重要的一个功能。对于大型应用而言,一次性加载大量数据不仅会消耗过多资源,还可能导致用户体验下降。因此,合理地进行分页处理显得尤为重要。本篇文章将通过具体的例子来介绍...

    java JDBC连接数据库,并将数据分页

    在本教程中,我们将深入探讨如何使用JDBC连接Oracle数据库,并实现数据的分页查询,以提高数据提取效率。 首先,确保你已经安装了Oracle数据库驱动,通常以ojdbc.jar的形式存在。将其添加到项目的类路径中,以便...

    jsp+jdbc+servlet分页带增删查改

    在这个分页应用中,JDBC用于建立与数据库的连接,执行SQL语句(如SELECT、INSERT、UPDATE、DELETE),并处理查询结果。 3. **Servlet**:Servlet是Java Web应用中的服务器端组件,用于接收和响应客户端请求。在MVC...

    纯JSP +JDBC实现分页

    以下是一个简单的分页实现步骤: 1. **连接数据库**:使用`Class.forName()`加载JDBC驱动,然后通过`DriverManager.getConnection()`建立数据库连接。 2. **准备SQL语句**:根据用户请求的页码和每页大小,计算出...

    sturts+oracle+jdbc实现分页

    `Page.java`可能代表一个分页模型类,它通常包含当前页数、每页显示条数、总页数、总记录数等属性,以及用于计算和管理分页的逻辑方法。例如,`getPageStart()`方法计算出从数据库获取数据的起始位置,`getPageEnd()...

Global site tag (gtag.js) - Google Analytics