servlet分页

采用servlet进行分页处理
Java代码
步骤:   

1.  创建SepPage类,并设置有关的方法。   

2.  在进行页面的转移时传递并当前的页面并传递参数。   

3.  进行分页处理。   

a.  计算总记录数   

b.  怎么样进行分页   

c.  首页显示处理   

d.  传递有关参数   

e.  获取有关传递的页面的参数   

 

  

实例:以查询所有的用户信息为例子进行说明   

  

  1. package bean;   
  2. /**********************分页类描述************************/  
  3. public class SepPage    
  4. {   
  5.     private int allRows; // 一共有多少行记录   
  6.     private int curPage = 1// 当前页面   
  7.     private int rowPerPage = 8// 一页显示多少行   
  8.     private int allPages; // 一共有多少页   
  9.     public int getAllRows()    
  10.     {   
  11.         return allRows;   
  12.     }   
  13.     public void setAllRows(int allRows)    
  14.     {   
  15.         this.allRows = allRows;   
  16.     }   
  17.     public int getCurPage()    
  18.     {   
  19.         return curPage;   
  20.     }   
  21.     public void setCurPage(int curPage)   
  22.     {   
  23.         this.curPage = curPage;   
  24.     }   
  25.     public int getRowPerPage()    
  26.     {   
  27.         return rowPerPage;   
  28.     }   
  29.     public void setRowPerPage(int rowPerPage)    
  30.     {   
  31.         this.rowPerPage = rowPerPage;   
  32.     }   
  33.     public int getAllPages()   
  34.     {   
  35.         return allPages;   
  36.     }   
  37.     public void setAllPages(int allPages)   
  38.     {   
  39.         this.allPages = allPages;   
  40.     }   
  41. }   
  42.   
  43.   
  44. 2.数据接收servlet   
  45. package servlet;   
  46. import java.io.IOException;   
  47. import java.io.PrintWriter;   
  48. import javax.servlet.ServletException;   
  49. import javax.servlet.http.HttpServlet;   
  50. import javax.servlet.http.HttpServletRequest;   
  51. import javax.servlet.http.HttpServletResponse;   
  52. import bean.DBOperationBean;   
  53. import java.util.*;   
  54. import util.Convert;   
  55. import java.sql.*;   
  56. import bean.*;   
  57. /**  
  58.  * servlet类,获取有关客户的信息并进行相关的处理  
  59.  * @author qihuasun  
  60.  */  
  61. public class CustomerServlet extends HttpServlet   
  62. {   
  63.     //查询所有sql语句   
  64.     public static final String SELECTBYALL="select * from SCOTT.EXRM_T_CUSTOMER order by CUM_FULLNAME ";   
  65.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  66.     throws ServletException, IOException    
  67.     {   
  68.          this.doPost(request, response);   
  69.      }   
  70.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  71.     throws ServletException, IOException    
  72.     {   
  73.         //处理有关中文乱码问题   
  74.         request.setCharacterEncoding("GBK");   
  75.         response.setContentType("text/html;charset=GBK");   
  76.         response.setCharacterEncoding("GBK");   
  77.         String status=request.getParameter("status").trim();//获取页面传递的标志位status   
  78.         String path="error.jsp";   
  79.          if(!status.equals("")|| status!=null)   
  80.          {   
  81.            
  82.            if(status.equals("findall"))   
  83.           {   
  84.                DBOperationBean db=new DBOperationBean();   
  85.               String page=request.getParameter("curpage");   
  86.                try  
  87.                 {      
  88.                    int curPage = Integer.parseInt(request.getParameter("curPage"));   
  89. //获取页面传递的参数   
  90.                     SepPage pa=new SepPage();   
  91.                     pa.setCurPage(curPage);   
  92.                     ArrayList al=db.query(this.SELECTBYALL,pa);   
  93.                     if(al!=null)   
  94.                      {   
  95.                         // path="main.jsp";   
  96.                           path="TestMain2.jsp";   
  97.                           request.setAttribute("all",al);   
  98.                      }   
  99.                     else  
  100.                     {   
  101.                         path="error.jsp";   
  102.                     }   
  103.                    
  104.                 }   
  105.                 catch(Exception ex)   
  106.                 {   
  107.                     ex.printStackTrace();   
  108.                 }      
  109.           }   
  110.              
  111.          }   
  112.          request.getRequestDispatcher(path).forward(request,response);   
  113.            
  114.     }   
  115.   
  116. }   
  117.   
  118. 4.  数据访问类   
  119.  package bean;   
  120. import java.sql.*;   
  121.   
  122. import javax.sql.*;   
  123. import javax.xml.parsers.DocumentBuilder;   
  124. import javax.xml.parsers.DocumentBuilderFactory;   
  125. import javax.naming.*;   
  126. import org.w3c.dom.Document;   
  127. import org.w3c.dom.Element;   
  128. import org.w3c.dom.NodeList;   
  129. import java.util.*;   
  130. import bean.SepPage;   
  131. /**  
  132.  * bean类,获取有关配置文件的信息的页面的信息,并进行有关的处理  
  133.  * @author qihuasun  
  134.  */  
  135. public class DBOperationBean    
  136. {   
  137.      //驱动   
  138.    private final String DBDRIVER    = "oracle.jdbc.driver.OracleDriver";   
  139.    // 数据库连接地址   
  140.    private final String DBURL       = "jdbc:oracle:thin:@127.0.0.1:1521:data";   
  141.     // 数据库用户名   
  142.    private final String DBUSER      = "SCOTT";   
  143.     // 数据库连接密码   
  144.    private final String DBPASSWORD  = "sqh";   
  145.     // 声明一个数据库连接对象   
  146.    private Connection conn              = null ;   
  147.    private PreparedStatement  pstm=null;   
  148.    private ResultSet rs=null;   
  149.    public DBOperationBean()   
  150.    {   
  151.        this.init();   
  152.    }   
  153.     private void init()  //从数据库连接属性XML配置文件中获取关于连接的信息   
  154.     {       
  155.         conn=new DBConnection().getConnection();   
  156.     }   
  157.     private Connection getConnection() //取得数据库连接并设置为当前连接   
  158.     {      
  159.          try  
  160.          {   
  161.               Class.forName(DBDRIVER);    
  162.                 
  163.               conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);// 连接数据库   
  164.               System.out.println("connected");   
  165.          }   
  166.          catch(Exception ex)   
  167.          {   
  168.              ex.printStackTrace();   
  169.          }   
  170.              
  171.            
  172.         return this.conn;   
  173.     }           
  174.        
  175.     public ArrayList query(String sql,SepPage page) throws Exception   
  176.     {//执行查询,返回结果集   
  177.         ArrayList al=new ArrayList();   
  178.         try  
  179.         {   
  180.             Connection conn=this.getConnection();   
  181.             pstm = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,   
  182.                     ResultSet.CONCUR_READ_ONLY);   
  183.             rs=pstm.executeQuery();   
  184.             rs.last(); // 移动到最后一行   
  185.             page.setAllRows(rs.getRow()); // 设置一共有多少行记录   
  186.             // 算出有多少页   
  187.             if (page.getAllRows() % page.getRowPerPage()== 0)    
  188.             {   
  189.                 page.setAllPages(page.getAllRows() / page.getRowPerPage());   
  190.             }   
  191.             else    
  192.             {   
  193.                 page.setAllPages(page.getAllRows() / page.getRowPerPage() + 1);   
  194.             }   
  195.             //判定是否是第一页   
  196.             if (page.getCurPage() == 1//当前页   
  197.             {   
  198.                 // 将指针移动到此ResultSet对象的开头,正好位于第一行之前   
  199.                 rs.beforeFirst();   
  200.             }    
  201.             else    
  202.             {   
  203.                 // 将指针移动到此ResultSet对象的给定行编号   
  204.                 rs.absolute((page.getCurPage() - 1) * page.getRowPerPage());   
  205.             }   
  206.             int i = 0;   
  207.             while(rs.next() && i < page.getRowPerPage())   
  208.             {   
  209.                  Customer cu=new Customer();   
  210.                  cu.setId(rs.getInt("CUM_ID"));   
  211.                  cu.setName(rs.getString("CUM_FULLNAME"));   
  212.                  cu.setAddress(rs.getString("CUM_MAINADDRESS"));   
  213.                  cu.setPhone(rs.getString("CUM_PHONE"));   
  214.                  al.add(cu);   
  215.                  i++;   
  216.             }   
  217.         }   
  218.         catch(Exception ex)   
  219.         {   
  220.              ex.printStackTrace();      
  221.         }   
  222.         finally  
  223.         {   
  224.                try  
  225.                {   
  226.                    if(conn!=null)   
  227.                    {   
  228.                        this.conn.close();   
  229.                    }   
  230.                }   
  231.                catch(Exception ex)   
  232.                {   
  233.                    ex.printStackTrace();      
  234.                }              
  235.         }   
  236.         return al;   
  237.     }   
  238. }   
  239.   
  240. 4、页面显示   
  241.   <%@ page language="java" contentType="text/html;charset=GBK"%>   
  242. <%@ page import="java.util.*,bean.SepPage"%>   
  243. <%@page import="bean.Customer;"%>   
  244.   
  245. <%   
  246.     ArrayList all = (ArrayList) request.getAttribute("all");   
  247.     SepPage seppage = (SepPage) request.getAttribute("pagebean");   
  248. //获取设置的SepPage参数   
  249. %>   
  250. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">   
  251. "http://www.w3.org/1999/xhtml">   
  252.        
  253.         客户管理   
  254.         "css/style.css" rel="stylesheet" />   
  255.        
  256.        
  257.         class="top" >   
  258.             『 作者管理 』   
  259.         
  
  •         class="center">   
  •             "AuthorServlet?status=selectbylike&curPage=1" method="post" style="margin: 0;">   
  •                 class="fine" cellpadding="0" cellspacing="0">   
  •                        
  •                         "3" style="height: 40px;">   
  •   
  •                            
  •                         
  •                        
  •                           
  •                               序号   
  •                            
  •                            
  •                             客户名称   
  •                            
  •                            
  •                             联系电话   
  •                            
  •                                
  •                             地址   
  •                            
  •                                
  •                             操作   
  •                            
  •                        
  •                     <%   
  •                         int i=0;   
  •                         if (all != null && all.size() != 0)   
  •                          {   
  •                             for (int j=0;j
  •                             {     
  •                                 i++;   
  •                                 Customer cus=(Customer)all.get(j);   
  •                                 int authorId1=cus.getId();   
  •                                 String str="找不到记录!!!";   
  •                                 if(i==0)   
  •                                 {    
  •                                        
  •                                       
  •                                    out.println("alert('找不到记录')
  • 你可能感兴趣的:(J2EE)