servlet 实现分页

  1. package manager_servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import javax.naming.InitialContext;
  8. import javax.servlet.*;
  9. import javax.servlet.http.*;
  10. import javax.sql.DataSource;
  11. public class list_room extends HttpServlet {
  12.     private static final String CONTENT_TYPE = "text/html; charset=GBK";
  13.     public void init(ServletConfig config) throws ServletException {
  14.         super.init(config);
  15.     }
  16.     public void service(HttpServletRequest request, 
  17.                         HttpServletResponse response) throws ServletException, IOException {response.setContentType(CONTENT_TYPE);
  18.         PrintWriter out = response.getWriter();
  19.         out.println("<html>");
  20.         out.println("<head><title>servlet分页实现</title></head>");
  21.         out.println("<body>");       
  22.         HttpSession session=request.getSession();
  23.         request.setCharacterEncoding("GBK");
  24.         String username=(String)session.getAttribute("username");  
  25.             
  26.                     
  27.         try{
  28.             InitialContext ic=new InitialContext();//连接数据库
  29.             DataSource ds =(DataSource)ic.lookup("jdbc/DBConn_hotelDS");
  30.             Connection conn = ds.getConnection();
  31.           
  32.            Statement  stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //Statement取得的ResultSet就是可滚动的
  33.            String sql="...";
  34.            ResultSet rs=stmt.executeQuery(sql);
  35.            rs.last();
  36.             
  37.             int pageSize = 2;//每页显示的记录数 
  38.             int pageCount = 0;//总页数 
  39.             int rowCount = rs.getRow(); //获取记录总数.             
  40.             // pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize ) : (rowCount / pageSize +1); 
  41.             pageCount = (rowCount+pageSize-1)/pageSize;          
  42.             int currentPage = 1;//当前页 
  43.              //取得用户所指定的页 
  44.              String goToPage = request.getParameter("list_room");//list_room为当前页 
  45.                 if (goToPage == null){
  46.                     goToPage = "1";
  47.                 }                
  48.                 //转换成整形 
  49.                     try{
  50.                         currentPage= Integer.parseInt(goToPage);
  51.                     }
  52.                     catch (NumberFormatException ex){
  53.                         currentPage = 1;
  54.                     }                
  55.                 //当前页小于等于第一页 则按第一页算 如果 当前页大于等于总页数则为最后页 
  56.                 if(currentPage <=1){
  57.                     currentPage = 1;
  58.                 }
  59.                 else if(currentPage >= pageCount){
  60.                     currentPage =  pageCount;
  61.                 }                
  62.                 //游标的位置 (当前页 - 1) * 页面大小 + 1 
  63.                 int posion = (currentPage -1 ) * pageSize + 1;
  64.                 //设置游标的位置  
  65.                 rs.absolute(posion);
  66.                 int i=1;          
  67.           
  68.           while(i<pageSize && !rs.isAfterLast())          
  69.           {
  70.               //...  
  71.               rs.next();
  72.               i++;
  73.           }            
  74.             out.print("   第"+list_room+"页 ");
  75.             if(currentPage< pageCount){
  76.                 out.print("<a href=trader_index.jsp?list_room="+ (currentPage+1) +">[下一页]</a> ");
  77.              }
  78.             
  79.             if(currentPage > 1){
  80.              out.print("<a href=trader_index.jsp?list_room="+ (currentPage-1)+">[上一页]</a> ");            
  81.             }             
  82.             
  83.             out.print("<a href=trader_index.jsp?list_room=" +1">『首页』</a> ");              
  84.             out.print(" <a href=trader_index.jsp?list_room="+pageCount+">『尾页』</a> ");
  85.             
  86.            
  87.             out.print("共"+pageCount+"页");
  88.             
  89.                        
  90.             rs.close();
  91.             stmt.close();
  92.             conn.close();        
  93.         }catch(Exception e){e.printStackTrace();}
  94.        
  95.         out.println("</body></html>");
  96.         out.close();
  97.     }
  98. }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值