JSP(4):分页技术
来源:互联网 发布:多媒体文件播放软件 编辑:程序博客网 时间:2024/05/16 23:48
分页技术:
分页技术是任何一个网站(网上商城,blog)都会使用到的技术,因此学习b/s开发就一定要掌握该技术。
我们先讲分面的算法:
我们需要定义四个变量,它们有各自的用处:
int pageSize:每页显示多少条记录
int pageNow:希望显示第几页
int pageCount:一共有多少页
int rowCount:一共有多少条记录
说明:pageSize是指定的pageNow是用户选择的
rowCount是从表中查询得到的
pageCount是计算出来的,该计算为:
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
举例说明:
有用户表,共9条记录:
rowCount=9;
每页显示3条记录,pageSize=3;
那么根据我们的算法
pageCount=3刚好不多不少
如果每页显示4条记录,pageSize=4那么pageCount=3那么最后一页只有一条记录
针对上面的问题,我们可能很自然的想到用:select字段名列表from表名where id between ?and ?
以我们前面的user表为例显示第三页,该查询语句就是;select *from users where userId between 7and 9
这个sql语句确实是比较快,但是它有一个问题 就是如果表的id被删除了,那么某页可能就会少 一条记录。
因此最终解决方法如下:
select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)
//欢迎界面//登录界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Wel extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){ //业务逻辑 Connection ct=null; PreparedStatement ps=null; ResultSet rs=null; try{//得到sessionHttpSession hs = req.getSession(true);String myname = (String)hs.getAttribute("pass");String u = req.getParameter("username");String p = req.getParameter("passwd");if(myname == null){res.sendRedirect("login");}else{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//=========分页功能===============int pageSize=3;//一页显示几条记录int pageNow=1;//希望显示第几页int rowCount=0;//共有几条记录(查表)int pageCount=0;//共有几页(计算)//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //得到链接 ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdb","sa","tiger"); ps = ct.prepareStatement("select count(*) from users"); rs= ps.executeQuery(); //返回一个结果集,如果增加,删除,更改的话用update if(rs.next()){ rowCount=rs.getInt(1); } //计算PageCount if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; } ps=ct.prepareStatement("select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)"); //给?赋值 // ps.setInt(1,pageSize); //ps.setInt(2,pageSize*(pageNow-1)); //执行查询 rs=ps.executeQuery(); //设置表头 pw.println("<table border=1>"); pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th></tr>"); //显示出来 while(rs.next()){ pw.println("<tr>"); pw.println("<td>"+rs.getInt(1)+"</td>"); pw.println("<td>"+rs.getString(2)+"</td>"); pw.println("<td>"+rs.getString(3)+"</td>"); pw.println("<td>"+rs.getString(4)+"</td>"); pw.println("<td>"+rs.getInt(5)+"</td>"); pw.println("</tr>"); } pw.println("</table>"); pw.println("<img src=imgs/1.GIF ><br>");pw.println("wellcome! "+u+" your password="+p);pw.println("你的用户名是:"+u); //做个超链接 pw.println("<br><a href=login>返回重新登陆</a>"); }}catch(Exception ex){ex.printStackTrace();}}}
//欢迎界面//登录界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Wel extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){ //业务逻辑 Connection ct=null; PreparedStatement ps=null; ResultSet rs=null; try{//得到sessionHttpSession hs = req.getSession(true);String myname = (String)hs.getAttribute("pass");String u = req.getParameter("username");String p = req.getParameter("passwd");if(myname == null){res.sendRedirect("login");}else{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//显示图片 pw.println("<img src=imgs/1.GIF ><br>"); pw.println("wellcome! "+u+" your password="+p); pw.println("你的用户名是:"+u);//=========分页功能===============int pageSize=3;//一页显示几条记录int pageNow=1;//希望显示第几页int rowCount=0;//共有几条记录(查表)int pageCount=0;//共有几页(计算)//动态的接收pageNowString sPageNow=req.getParameter("pageNowok");if(sPageNow!=null){pageNow=Integer.parseInt(sPageNow);}//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //得到链接 ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdb","sa","tiger"); ps = ct.prepareStatement("select count(*) from users"); rs= ps.executeQuery(); //返回一个结果集,如果增加,删除,更改的话用update if(rs.next()){ rowCount=rs.getInt(1); } //计算PageCount if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; } ps=ct.prepareStatement("select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)"); //给?赋值 // ps.setInt(1,pageSize); //ps.setInt(2,pageSize*(pageNow-1)); //执行查询 rs=ps.executeQuery(); //设置表头 pw.println("<table border=1>"); pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th></tr>"); //显示出来 while(rs.next()){ pw.println("<tr>"); pw.println("<td>"+rs.getInt(1)+"</td>"); pw.println("<td>"+rs.getString(2)+"</td>"); pw.println("<td>"+rs.getString(3)+"</td>"); pw.println("<td>"+rs.getString(4)+"</td>"); pw.println("<td>"+rs.getInt(5)+"</td>"); pw.println("</tr>"); } pw.println("</table>"); //做个超链接 pw.println("<br><a href=login>返回重新登陆</a>"); //显示超链接 for(int i=1;i<=pageCount;i++){ pw.println("<a href=wel?pageNowok="+i+">"+i+"</a>"); } }}catch(Exception ex){ex.printStackTrace();}}}
//欢迎界面//登录界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Wel extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){ //业务逻辑 Connection ct=null; PreparedStatement ps=null; ResultSet rs=null; try{//得到sessionHttpSession hs = req.getSession(true);String myname = (String)hs.getAttribute("pass");String u = req.getParameter("username");String p = req.getParameter("passwd");if(myname == null){res.sendRedirect("login");}else{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();pw.println("<body><center>");//显示图片 pw.println("<img src=imgs/2.jpg ><br>"); pw.println("wellcome! "+u+" your password="+p); pw.println("你的用户名是:"+u);//=========分页功能===============int pageSize=3;//一页显示几条记录int pageNow=1;//希望显示第几页int rowCount=0;//共有几条记录(查表)int pageCount=0;//共有几页(计算)//动态的接收pageNowString sPageNow=req.getParameter("pageNowok");if(sPageNow!=null){pageNow=Integer.parseInt(sPageNow);}//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //得到链接 ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdb","sa","tiger"); ps = ct.prepareStatement("select count(*) from users"); rs= ps.executeQuery(); //返回一个结果集,如果增加,删除,更改的话用update if(rs.next()){ rowCount=rs.getInt(1); } //计算PageCount if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; } ps=ct.prepareStatement("select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)"); //给?赋值 // ps.setInt(1,pageSize); //ps.setInt(2,pageSize*(pageNow-1)); //执行查询 rs=ps.executeQuery(); //设置表头 pw.println("<table border=1>"); pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th></tr>"); //显示出来 while(rs.next()){ pw.println("<tr>"); pw.println("<td>"+rs.getInt(1)+"</td>"); pw.println("<td>"+rs.getString(2)+"</td>"); pw.println("<td>"+rs.getString(3)+"</td>"); pw.println("<td>"+rs.getString(4)+"</td>"); pw.println("<td>"+rs.getInt(5)+"</td>"); pw.println("</tr>"); } pw.println("</table>"); //做个超链接 pw.println("<br><a href=login>返回重新登陆</a></br>"); //上一页 if(pageNow!=1) pw.println("<a href=wel?pageNowok="+(pageNow-1)+">上一页</a>"); //显示超链接 for(int i=pageNow;i<=pageNow+4;i++){ pw.println("<a href=wel?pageNowok="+i+">"+i+"</a>"); } //下一页 if(pageNow!=pageCount) pw.println("<a href=wel?pageNowok="+(pageNow+1)+">下一页</a>"); pw.println("</center></body>");}}catch(Exception ex){ex.printStackTrace();}}}
- JSP(4):分页技术
- JSP分页技术实现
- JSP分页技术一
- JSP分页技术二
- JSP分页技术实现
- JSP分页技术实现
- JSP分页技术实现
- jsp实现分页技术
- JSP分页技术实现
- JSP分页技术实现
- jsp分页技术
- JSP分页技术实现
- JSP分页技术实现
- JSP分页技术
- 纯jsp分页技术
- JSP分页技术
- JSP分页技术小结
- Jsp 分页技术
- UVa 120 - Stacks of Flapjacks
- c++中向量
- ubuntu安装后没grub启动管理器
- 由int与unsigned int 相加看c++类型转换
- 网桥的问题
- JSP(4):分页技术
- Java提高篇(二六)------hashCode
- KMP算法详解(转)
- css menu drop
- 查看当前系统的apache版本
- The Heartbleed Bug
- Matlab之print,fprint,fscanf,disp函数
- POJ 2186 -- Popular Cows (Strongly Connected Components)
- 【C++再学习】【01】新的开始