0
点赞
收藏
分享

微信扫一扫

java翻页处理(转)

闲云困兽 2023-04-11 阅读 78


(http://blog.sina.com.cn/s/blog_44b50ff001009fqa.html)
JSP翻页的方法有很多,我在做学生管理系统的时候,就一直在想用什么方法来实现翻页。首先看一个最简单的方法:

<%@ page language="java" import="java.util.*,com.liweihua.persistence.*" pageEncoding="gb2312"%>
 <%
  //变量声明    
  java.sql.Connection sqlCon; //数据库连接对象    
  java.sql.Statement sqlStmt; //SQL语句对象    
  java.sql.ResultSet sqlRst;  //结果集对象     java.lang.String strCon;   //数据库连接字符串    
  java.lang.String strSQL;   //SQL语句     int intPageSize;    //一页显示的记录数    
  int intRowCount;    //记录总数    
  int intPageCount;   //总页数    
  int intPage;     //待显示页码    
  java.lang.String strPage; int i;
 //设置一页显示的记录数    
  intPageSize = 10; //取得待显示页码    
  strPage = request.getParameter("page");
  if (strPage == null) {     //表明在QueryString中没有page这一个参数,此时显示第一页数据    
   intPage = 1;
  } else {        //将字符串转换成整型    
   intPage = java.lang.Integer.parseInt(strPage);
   if (intPage < 1)
    intPage = 1;
  } //装载JDBC驱动程序  
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //设置数据库连接字符串   ,你的ODBC名字  
  strCon = "jdbc:odbc:information"; //连接数据库    
  sqlCon = java.sql.DriverManager.getConnection(strCon, "", ""); //创建一个可以滚动的只读的SQL语句对象    
  sqlStmt = sqlCon.createStatement(
    java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
    java.sql.ResultSet.CONCUR_READ_ONLY); //准备SQL语句    
  strSQL = "select admin_loginname,admin_realname, admin_rank,admin_class_id,admin_duty,admin_phone,admin_logintime from admin order by admin_rank"; //执行SQL语句并获取结果集    
  sqlRst = sqlStmt.executeQuery(strSQL); //获取记录总数    
  sqlRst.last();
  intRowCount = sqlRst.getRow(); //记算总页数    
  intPageCount = (intRowCount + intPageSize - 1) / intPageSize; //调整待显示的页码    
  if (intPage > intPageCount)
   intPage = intPageCount;
 %><%
  String path = request.getContextPath();
  String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
 %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
  <head>
   <base href="<%=basePath%>">  <title>管理员信息浏览</title>
      <link href="<%=path%>/main/css/swb.css" rel="stylesheet" type="text/css">
   <meta http-equiv="pragma" content="no-cache">
   <meta http-equiv="cache-control" content="no-cache">
   <meta http-equiv="expires" content="0">
   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
   <meta http-equiv="description" content="This is my page">
  
      <style type="text/css">
 <!--
 .STYLE1 {color: #660099}
 -->
         </style>
 </head>
  <body>
  <center>
    <h2><span class="STYLE1">管理员信息浏览</span>     <br>
      <br>
    </h2>
    <table border="1" cellspacing="0" cellpadding="0">
    <tr>
     <th>ID</th>
     <th>姓名</th>
     <th>权限</th>
     <th>班级</th>
     <th>职务</th>
     <th>电话</th>
     <th>最后登陆时间</th>
    </tr>   <%
      if (intPageCount > 0) {
      //将记录指针定位到待显示页的第一条记录上    
      sqlRst.absolute((intPage - 1) * intPageSize + 1);     //显示数据    
      i = 0;
      String class_id="";
      String class_statement="";
      ClassDB classdb = new ClassDB();
      while (i < intPageSize && !sqlRst.isAfterLast()) {
    %>
    <tr>
     <td><%=sqlRst.getString(1)%></td>
     <td><%=sqlRst.getString(2)%></td>
     <td><%=sqlRst.getString(3)%></td>
     <%
     //通过班级的ID拿到班级的专业和班号
     class_id = sqlRst.getString(4);
     //给一个班级的ID返回 一个字符串:信息系 XX专业 XX班
     class_statement = classdb.getClassMajorClassbyID(class_id);
      %>
     <td><%=class_statement %></td>
     <td><%=sqlRst.getString(5)%></td>
     <td><%=sqlRst.getString(6)%></td>
     <td><%=sqlRst.getString(7)%></td>
    
    </tr>
    <%
       sqlRst.next();
       i++;
      }
     }
    %>
    </table>
   <BR>
   <BR>
   第<%=intPage%>页   共<%=intPageCount%>页    
   <%
   if (intPage < intPageCount) {
   %><a
    href="admin\admin_browse.jsp?page=<%=intPage + 1%>">下一页</a>
   <%
   }
   %>
   <%
   if (intPage > 1) {
   %><a href="admin\admin_browse.jsp?page=<%=intPage - 1%>">上一页</a>
   <%
   }
   %>
  </center>
  </body>
 </html><%
  //关闭结果集    
  sqlRst.close();
  //关闭SQL语句对象    
  sqlStmt.close();
  //关闭数据库    
  sqlCon.close();
 %>

 

 

这个方法实现了翻页功能,但是发现核心代码都写在了页面上,这样就是造成系统的安全性不高。我也考虑过这个问题,但是由于为系做系统,再加上快考TOEFL了,为了快速开发,我就运用了这个方法。

 

昨天晚上和我的JAVA启蒙老师谈论了关于JAVA翻页技术,我感觉深受启发。翻页应该通过JAVABEAN来实现,传入JAVABEAN一个页数,返回 一个list,而这个list中数据量是通过SQL中的limit这个函数来实现的。这样问题就简单了。我们也学过ASP的翻页,方法和最上面的原始方法 一样,我越来越发现JSP的重要性了。

举报

相关推荐

0 条评论