jsp学习笔记2——分页功能实现

简单用户登录系统
1.数据库表
create database spdb1
use spdb1
create table users(
userid int primary key identity(1,1),
username varchar(20),
passwd varchar(20),
email varchar(30),
grade int
)
2.分页
pageSize(每页显示多少条记录,指定)
pageNow(希望显示第几页,用户选择)
pageCount(一共有多少页,查询数据库)
rowCount(一共有多少条记录,计算得到)

算法如下:
if(rowCount%pageSize==0){
    pageCount=rowCount/pageSize;
}else{
    pageCount=rowCount/pageSize+1;
}

mysql语句如下:
(1)一共有多少条记录
select count(*) from users;
(2)分页
select * from users limit 3,4;
其表示从第3条记录之后显示4条记录,具体分页语句如下:
"select * from users limit "+ (pageNow - 1) * pageSize
+ "," + pageSize
(3)表数据的自我复制,作用是检查数据库操作表的效率
insert int 表名 (字段1,2,···) select 字段1,2,··· from 表名

3.示例代码

[java:nogutter] view plain copy print ?
  1. <%@page contentType="text/html;charset=UTF-8" import="java.sql.*"%>  
  2. <html>  
  3.     
  4.   <body>  
  5.     登录成功! <br>  
  6.     <%= request.getParameter("user")%><br>  
  7.     <a href="login.jsp" mce_href="login.jsp">返回重新登录</a>  
  8.     <hr>  
  9.     <center>  
  10.     <h1>用户信息列表</h1><br>  
  11.     <%  
  12.     //=================分页功能================   
  13.         //1.定义四个分页会用到的变量   
  14.         int pageSize=3;  
  15.         int pageNow=1;//默认显示第一页   
  16.         int rowCount=0;//该值从数据库查询   
  17.         int pageCount=0;//该值通过分页算法计算     
  18.           
  19.         //接收用户希望显示的页数(pageNow)   
  20.         String s_pageNow=request.getParameter("pageNow");   
  21.         if(s_pageNow!=null){  
  22.             //确实接收到pageNow   
  23.             pageNow=Integer.parseInt(s_pageNow);  
  24.         }  
  25.              
  26.         //2.查询得到rowCount   
  27.         Class.forName("com.mysql.jdbc.Driver");  
  28.         Connection ct = DriverManager.getConnection(  
  29.                 "jdbc:mysql://localhost:3306/spdb""root""root");  
  30.         Statement sm=ct.createStatement();  
  31.         ResultSet rs=sm.executeQuery("select count(*) from users");       
  32.         if(rs.next()){//注意,rs.next()是为了使sql中的游标指到具体结果   
  33.             rowCount=rs.getInt(1);  
  34.         }     
  35.               
  36.         //3.计算pageCount,也即分页算法   
  37.         if(rowCount%pageSize==0){  
  38.             pageCount=rowCount/pageSize;  
  39.         }else{  
  40.             pageCount=rowCount/pageSize+1;  
  41.         }     
  42.               
  43.         //4.查询出需要显示的记录   
  44.         rs=sm.executeQuery("select * from users limit "  
  45.                     + (pageNow - 1) * pageSize + "," + pageSize);  
  46.           
  47.         //5.显示   
  48.         %>  
  49.         <table border="1">  
  50.             <tr><td>用户id</td><td>用户名</td><td>密码</td><td>邮件地址</td><td>用户级别</td></tr>  
  51.           
  52.         <%  
  53.             while(rs.next()){  
  54.                %>  
  55.                <tr><td><%=rs.getInt(1)%></td><td><%=rs.getString(2)%></td><td><%=rs.getString(3)%></td><td><%=rs.getString(4)%></td><td><%=rs.getInt(5)%></td></tr>  
  56.                <%    
  57.             }  
  58.          %>  
  59.               </table>  
  60.         <%   
  61.         //6.显示超链接   
  62.          
  63.         if(pageNow!=1){  
  64.              out.print("<a href="wel.jsp?pageNow=1" mce_href="wel.jsp?pageNow=1">首页</a>");  
  65.             out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow-1)+">上一页</a>");  
  66.         }  
  67.         for(int i=pageNow;i<=pageNow+3;i++){  
  68.             out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+i+">["+i+"]</a>");  
  69.         }  
  70.         if(pageNow!=pageCount){  
  71.              out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow+1)+">下一页</a>");  
  72.              out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+pageCount+">尾页</a>");              
  73.          }  
  74.   
  75.    //=================分页功能================   
  76.     %>  
  77.   
  78.      </center>  
  79.   </body>  
  80. </html>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值