jsp+servlet+javaBean实现分页

JavaBean+Servlet+jsp实现分页显示(原创)

 

实现效果图

。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。

第一页  上一页  下一页  最后一页


代码:

(1)JavaBean //该javaBean需要连接一次数据库

PageDivide.java

 

package com.bean;

importjava.io.UnsupportedEncodingException;

import java.sql.*;

import java.util.ArrayList;

import java.util.List;

import com.myutil.DBCon;

 

public class PageDivide {

      

       intsumRecord=0;   //显示的总记录条数

   int pageRecord=10;   //每页显示的记录数

   int pageNum=0;      //显示的总页码数

   int showPage=1;   //所要显示的页码数

   

    privateConnection con=null;

   private PreparedStatement pstm=null;

   private ResultSet rs=null;

   private String sql="select * from category";//换成自己的表名

   public PageDivide(){

           //数据库连接

           con=DBCon.getConn();

            try {

                     pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

                     rs=pstm.executeQuery();

              }catch (SQLException e) {

                     //TODO Auto-generated catch block

                     e.printStackTrace();

              }

              this.sumRecord=this.getSumRecord();

       //     this.setSumRecord(this.getSumRecord());

              this.pageNum=this.getPageNum();

    }

   

   //获取总记录数

       publicint getSumRecord() {

              try{

                     rs=pstm.executeQuery();

                     rs.last();

                  sumRecord=rs.getRow();

 

              }catch (SQLException e) {

                     //TODO Auto-generated catch block

                     e.printStackTrace();

              }

      

             

              returnsumRecord;

       }

      

      

       publicList getData(int n){

              Listlist=new ArrayList();

              if(n<1)

              {

                n=1;

              }

              if(n>=pageNum)

              {

                n=pageNum;

              }

              int begin=(n-1)*pageRecord+1;//获取第n页的第一条记录的位置值

              try {

                     rs=pstm.executeQuery();

                     rs.absolute(begin);//将结果集的游标定位到第n页的第一条记录

                      for(inti=0;i<pageRecord&&(begin+i)<=sumRecord;i++){

                             //处理最后一页的特殊情况

                         try{

                                   intid = rs.getInt(1);

                                  

                                   StringcategoryName = rs.getString(2);

                                   //中文处理

                                   categoryName=newString(categoryName.getBytes("ISO8859_1"),"GB2312") ;

 

                                   intparentID = rs.getInt(3);

                                  

                                   intlayer = rs.getInt(4);

                                  

                                   Stringbz = rs.getString(5);

                                   //中文处理

                                   bz=newString(bz.getBytes("ISO8859_1"),"GB2312") ;

                                  

                                   //封装信息到实体中

                                   Categorycategory = new Category();

                                   category.setId(id);

                                   category.setCategoryName(categoryName);

                                   category.setParentID(parentID);

                                   category.setLayer(layer);

                                   category.setBz(bz);

 

                                   list.add(category);

                                    rs.next();

                                   }catch (UnsupportedEncodingException e) {

                                          //TODO Auto-generated catch block

                                          e.printStackTrace();

                                   }

                      }

//                   if (rs != null)

//                                 pstm.close();

//                          if(pstm != null)

//                                 pstm.close();

//                          if(con != null)

//                                 con.close();

                     rs.close();

                     pstm.close();

                     con.close();

                    

              }catch (SQLException e) {

                     //TODO Auto-generated catch block

                     e.printStackTrace();

              }

              returnlist;

       }

      

      

       publicvoid setSumRecord(int sumRecord) {

              this.sumRecord= sumRecord;

       }

       publicint getPageRecord() {

              returnpageRecord;

       }

       publicvoid setPageRecord(int pageRecord) {

              this.pageRecord= pageRecord;

       }

      

       //计算总页码数

       publicint getPageNum() {

              if(sumRecord%pageRecord==0)

              {

                pageNum=sumRecord/pageRecord;

              }else

              {

                pageNum=sumRecord/pageRecord+1;

              }

              System.out.println("总页数"+pageNum  +" 总记录条数"+sumRecord+"  每页显示的记录数"+pageRecord);

              returnpageNum;

       }

       publicvoid setPageNum(int pageNum) {

              this.pageNum= pageNum;

       }

       publicint getShowPage() {

              returnshowPage;

       }

       publicvoid setShowPage(int showPage) {

              this.showPage= showPage;

       }

   

   

}

附数据库连接类:DBCon.java

 

package com.myutil;

import java.sql.*;

//数据库驱动加载及连接

publicclass DBCon {

   intx;

   publicstatic ConnectiongetConn(){

  

      Connection con=null;

      String driver;

      String url;

      driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

        url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=bookManager";

    try{

       Class.forName(driver);

      con=DriverManager.getConnection(url,"sa","*****");

    }catch(Exception  e){

       e.printStackTrace();

    }finally{

        return con;

        }

   }

   //数据源方式连接

   publicstatic ConnectiongetConn2(){

     

      Connection con=null;

      String driver;

      String url;

      driver="sun.jdbc.odbc.JdbcOdbcDriver";

     url="jdbc:odbc:book";

    try{

       Class.forName(driver);

      con=DriverManager.getConnection(url);

    }catch(Exception  e){

       e.printStackTrace();

    }finally{

        return con;

        }

   }

   publicstaticvoid main(String args[]){

      getConn2();

   }

}

 

----------------------------------------------------------------------------------------------------------------------

(2)Servlet

PageServlet.java

 

package com.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import com.bean.PageDivide;

 

public class PageServlet extendsHttpServlet {

public void doGet(HttpServletRequestrequest, HttpServletResponse response)

                     throwsServletException, IOException {

 

 

 

              response.setContentType("text/html;charset=GB2312");

              PrintWriterout = response.getWriter();

             

              //1.创建分页Bean对象

              PageDividepd=new PageDivide();

              StringshowPage=request.getParameter("showPage");//获取所要显示的页码数     字符串

              intn;//获取所要显示的页码数

              intpageNum=pd.getPageNum();//获取总页码数

             

              if(showPage==null||"".equals(showPage)){

                     n=1;

              }

              elseif(Integer.parseInt(showPage)>pageNum){

                     n=pageNum;

              }

              else{

                     n=Integer.parseInt(showPage);

              }

             

              //获取第n页数据

              Listlist=pd.getData(n);

             

              request.setAttribute("showPage",new Integer(n));//保存当前所显示的页码

              request.setAttribute("pageNum",new Integer(pageNum));//保存总页数

              request.setAttribute("data",list); //保存第n页的数据

              request.getRequestDispatcher("/PageDivide/pagedivide2.jsp").forward(request,response);//页面的转向

             

             

              out.flush();

              out.close();

       }

 

}

----------------------------------------------------------------------------------------------------------------------

 

(3) Jsp显示页面

pagedivide2.jsp

 

<%@ pagelanguage="java"import="java.util.*,com.bean.*"pageEncoding="GB2312"%>

<%@ pagecontentType="text/html;GB2312"%>

 

<html>

  <head>

    <title>My JSP 'pagedivide2.jsp'starting page</title>

  </head>

  <body>

   <%!

      int showPage=1;

      int pageNum=0;

    %>

   

    <%

      Integerspstr=(Integer)request.getAttribute("showPage");//获取当前所显示的页码

     Integer pnstr=(Integer)request.getAttribute("pageNum");//获取总页数

     List list=(ArrayList)   request.getAttribute("data"); //获取第n页的数据

    //处理当前页码值

    if(spstr==null||"".equals(spstr)){

        showPage=1;

      }

      else{

      // showPage=Integer.parseInt(spstr);

      showPage=spstr.intValue();

      }

     

      //处理总页数

      pageNum=pnstr.intValue();

     

    //显示第n页的值

    for(inti=0;i<list.size();i++){

       Categoryc=(Category)list.get(i);

      out.print(c.getCategoryName()+""+c.getId()+" "+c.getBz());

       out.print("<br>");

    }

 

     %>

     <br>

       <a href="PageServlet?showPage=<%=1 %>">第一页</a>

       <a href="PageServlet?showPage=<%=showPage+1 %>">下一页</a>

       <a href="PageServlet?showPage=<%=showPage-1 %>">上一页</a>

       <a href="PageServlet?showPage=<%=pageNum%>">最后一页</a>

  </body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值