分页技术

Code:
  1. package com.tsinghua;  
  2. import javax.servlet.http.*;  
  3. import java.io.*;  
  4. import java.sql.*;  
  5.   
  6.   
  7. public class Wel extends HttpServlet{  
  8.   
  9.     //处理get请求  
  10.     //req:用于获得客户端(浏览器)的信息  
  11.     //res:用于向客户端(浏览器)返回信息  
  12.     public void doGet(HttpServletRequest req,HttpServletResponse res){  
  13.           
  14.         Connection ct=null;  
  15.         PreparedStatement ps=null;  
  16.         ResultSet rs=null;  
  17.         //中文乱码  
  18.         res.setContentType("text/html;charset=gbk");   
  19.         PrintWriter pw=null;  
  20.               
  21.         try{  
  22.             pw=res.getWriter();  
  23.             pw.println("<body><center>");  
  24.             //得到session  
  25.             HttpSession hs=req.getSession(true);  
  26.             String myName=(String)hs.getAttribute("pass");  
  27.             //判断  
  28.           
  29.             if(myName==null){  
  30.                 //非法登录,返回登录界面  
  31.                 res.sendRedirect("login");    
  32.                 return ;  
  33.             }     
  34.       
  35.             //===========分页的功能================  
  36.             int pageSize=3;//一页显示几条记录  
  37.             int pageNow=1;//希望显示第几页  
  38.             int rowCount=0;//共有几条记录  
  39.             int pageCount=0;//共有几页(计算出来的)  
  40.               
  41.             //动态的接受pageNow  
  42.             String sPageNow=req.getParameter("pageNow");  
  43.             if(sPageNow!=null){  
  44.                 pageNow=Integer.parseInt(sPageNow);  
  45.             }  
  46.               
  47.             //得到rowCount  
  48.             //连接数据库  
  49.             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
  50.             //得到链接(数据库的url)  
  51.             ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","sa");  
  52.             //创建一个Statement  
  53.             ps=ct.prepareStatement("select count(*) from users");  
  54.             rs=ps.executeQuery();  
  55.           
  56.             if(rs.next()){  
  57.                 rowCount=rs.getInt(1);  
  58.             }  
  59.               
  60.             //计算pageCount  
  61.             if(rowCount%pageSize==0){  
  62.                 pageCount=rowCount/pageSize;  
  63.             }else{  
  64.                 pageCount=rowCount/pageSize+1;  
  65.             }  
  66.               
  67.             ps=ct.prepareStatement("select top "+pageSize+" * from users where userId not in(select top "+pageSize*(pageNow-1)+" userId from users)");  
  68.               
  69.             rs=ps.executeQuery();  
  70.             //显示结果集  
  71.           
  72.             pw.println("<table border=1>");  
  73.             pw.println("<tr><th>id</th><th>username</th><th>password</th><th>email</th><th>grade</th></tr>");  
  74.             while(rs.next()){  
  75.                 pw.println("<tr>");  
  76.                 pw.println("<td>"+rs.getInt(1)+"</td>");  
  77.                 pw.println("<td>"+rs.getString(2)+"</td>");  
  78.                 pw.println("<td>"+rs.getString(3)+"</td>");  
  79.                 pw.println("<td>"+rs.getString(4)+"</td>");  
  80.                 pw.println("<td>"+rs.getInt(5)+"</td>");  
  81.                 pw.println("</tr>");  
  82.             }  
  83.             pw.println("</table>");  
  84.               
  85.             //显示超链接  
  86.             if(pageNow>1){  
  87.                 pw.println("<a href=wel?pageNow="+1+">首页</a>");  
  88.                 pw.println("<a href=wel?pageNow="+(pageNow-1)+">上一页</a>");  
  89.             }  
  90.               
  91.             for(int i=pageNow;i<=pageNow+4;i++){  
  92.                       
  93.                 pw.println("<a href=wel?pageNow="+i+">"+i+"</a>");  
  94.                 if(i>pageCount)  
  95.                     break;  
  96.             }  
  97.               
  98.             if(pageNow<pageCount){  
  99.                 pw.println("<a href=wel?pageNow="+(pageNow+1)+">下一页</a>");  
  100.                 pw.println("<a href=wel?pageNow="+pageCount+">末页</a>");  
  101.             }  
  102.             pw.println("</center></body>");  
  103.         }catch(Exception e){  
  104.             e.printStackTrace();  
  105.         } 
  106.     }  
  107.     //处理Post请求  
  108.     public void doPost(HttpServletRequest req,HttpServletResponse res){  
  109.           
  110.         this.doGet(req,res);  
  111.     }  
  112.       
  113.       
  114. }  

 最近在学习用Servlet做网页,这是刚刚学会的分页算法,与大家共享。


ps:我的新博客地址:http://www.xinghaixu.com

 

posted @ 2010-08-02 22:08  成长的企鹅  阅读(144)  评论(0编辑  收藏  举报