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.示例代码

<%@page contentType="text/html;charset=UTF-8" import="java.sql.*"%> <html> <body> 登录成功! <br> <%= request.getParameter("user")%><br> <a href="login.jsp" mce_href="login.jsp">返回重新登录</a> <hr> <center> <h1>用户信息列表</h1><br> <% //=================分页功能================ //1.定义四个分页会用到的变量 int pageSize=3; int pageNow=1;//默认显示第一页 int rowCount=0;//该值从数据库查询 int pageCount=0;//该值通过分页算法计算 //接收用户希望显示的页数(pageNow) String s_pageNow=request.getParameter("pageNow"); if(s_pageNow!=null){ //确实接收到pageNow pageNow=Integer.parseInt(s_pageNow); } //2.查询得到rowCount Class.forName("com.mysql.jdbc.Driver"); Connection ct = DriverManager.getConnection( "jdbc:mysql://localhost:3306/spdb", "root", "root"); Statement sm=ct.createStatement(); ResultSet rs=sm.executeQuery("select count(*) from users"); if(rs.next()){//注意,rs.next()是为了使sql中的游标指到具体结果 rowCount=rs.getInt(1); } //3.计算pageCount,也即分页算法 if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; } //4.查询出需要显示的记录 rs=sm.executeQuery("select * from users limit " + (pageNow - 1) * pageSize + "," + pageSize); //5.显示 %> <table border="1"> <tr><td>用户id</td><td>用户名</td><td>密码</td><td>邮件地址</td><td>用户级别</td></tr> <% while(rs.next()){ %> <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> <% } %> </table> <% //6.显示超链接 if(pageNow!=1){ out.print("<a href="wel.jsp?pageNow=1" mce_href="wel.jsp?pageNow=1">首页</a>"); out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow-1)+">上一页</a>"); } for(int i=pageNow;i<=pageNow+3;i++){ out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+i+">["+i+"]</a>"); } if(pageNow!=pageCount){ out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+(pageNow+1)+">下一页</a>"); out.print("<a href="wel.jsp?pageNow=" mce_href="wel.jsp?pageNow=""+pageCount+">尾页</a>"); } //=================分页功能================ %> </center> </body> </html>

你可能感兴趣的:(数据库,mysql,算法,jsp,table,database)