Topic: 急需java bean分页程序 |
Print this page |
1.急需java bean分页程序 | Copy to clipboard |
Posted by: itceolb2004 Posted on: 2005-05-26 16:51 各位好,那位大哥大姐有java bean比较好的分页程序,请共享一个,严重感谢!!!!! |
2.Re:急需java bean分页程序 [Re: itceolb2004] | Copy to clipboard |
Posted by: leowu2000 Posted on: 2005-05-27 09:31 before u ask question,search here PLZ! for example use keywords "java bean 分页" u'll get what u need on this bbs. |
3.Re:急需java bean分页程序 [Re: itceolb2004] | Copy to clipboard |
Posted by: henbane Posted on: 2005-05-28 09:36 楼上说的对,这个BBS里有个非常好的BEAN分页帖子,自己找找看吧 |
4.Re:急需java bean分页程序 [Re: itceolb2004] | Copy to clipboard |
Posted by: henbane Posted on: 2005-05-30 10:53 我们使用一个beans来实现数据库的记录的分页显示,方法有很多种。本例是以ResultSet类的游标来实现分页的。 本例由:分页显示记录的页面Jsp 分页beans 数据库连接beans组成 本例在Tomcat下测试通过。 关键思想: 假设总记录数为m,每页显示的记录数是n,那么总页数的计算公式是: 总页数=(m%n)==0?(m/n)m/n+1); 如果准备显示第p页的内容,应当把游标移动到第(p-1)*n+1条记录处。 源代码如下: 1、分页beans pageNumber.java package bean; public class PageNumber { int rowCount=1, //总的记录数 pageSize=1, //每页显示的记录数 showPage=1, //设置预显示的页码数 pageCount=1; //分页之后的总页数 public void setRowCount(int n){ rowCount=n; } public int getRowCount(){ return rowCount; } public void setPageCount(int r,int p){ rowCount=r; pageSize=p; pageCount=(rowCount%pageSize)==0?(rowCount/pageSize)rowCount/pageSize+1); //计算分页之后的总页数 } public int getPageCount(){ return pageCount; } public void setShowPage(int n){ showPage=n; } public int getShowPage(){ return showPage; } public void setPageSize(int n){ pageSize=n; } public int getPageSize(){ return pageSize; } } 2、数据库连接beans package bean; import java.sql.*; import java.io.*; public class MyConnection{ Connection con=null; //声明一个共享的连接对象 Statement stat=null; ResultSet rs=null; int rowCount=0; //总的记录数 public MyConnection(){ try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); }catch(ClassNotFoundException e){ System.out.print; } try{ con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=student;","sa",""); }catch(SQLException e){ System.out.print; } } public ResultSet myQuery(String sql) throws SQLException{ //结果集的游标可上下移动,但当数据库变化时,结果集不变, //不能用结果集更新数据库中的表 stat=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //返回可滚动的结果集 rs=stat.executeQuery(sql); return rs; } public void myClose() throws SQLException{ con.close(); } } 3、分页显示记录的JSP页面 <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <%@page import="bean.PageNumber"%> <%@page import="bean.MyConnection"%> <%@page import="java.io.*"%> <jsp:useBean id="handlePage" class="bean.PageNumber" scope="session"/> <jsp:useBean id="myCon" class="bean.MyConnection" scope="application"/> <HTML> <BODY bgcolor=cyan><Size=1> <CENTER> <BR><BR> <%! // 以表格形式显示数据库记录的方法 public void showList(ResultSet rs,JspWriter out,int n){ try{ out.print("<BR><BR><Table border=2><tr><th>学号<th>姓名<th>数学<th>英语<th>物理</tr>"); for(int i=1;i<=n;i++){ out.print("<tr>"); String number=rs.getString(1); out.print("<td>"+number+"</td>"); String name=rs.getString(2); out.print("<td>"+name+"</td>"); int math=rs.getInt(3); out.print("<td>"+math+"</td>"); int english=rs.getInt(4); out.print("<td>"+english+"</td>"); int physics=rs.getInt(5); out.print("<td>"+physics+"</td>"); out.print("</tr>"); rs.next(); } out.print("</table>"); }catch(Exception e){ System.out.println; } } %> <% ResultSet rs=null; int rowCount=0; //总的记录数 try{ //返回可滚动的结果集 rs=myCon.myQuery("select * from students"); //将游标移动到最后一行 rs.last(); //获取记录总数 rowCount=rs.getRow(); //设置每页显示的记录数 handlePage.setPageSize(2); //计算总页数 handlePage.setPageCount(rowCount,handlePage.getPageSize()); out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+handlePage.getPageSize()+"条记录"); }catch(SQLException e){ out.print; } %> <%--选择显示某页的表单--%> <%String str=response.encodeRedirectURL("showList.jsp"); //获取showList.jsp的url%> <Form action="<%=str%>" method="post"> 显示首页:<Input Type="hidden" name="a" value="first"> <input type=submit value="first"> </form> <Form action="<%=str%>" method="post"> 显示下一页:<Input Type="hidden" name="a" value="next"> <input type=submit value="next"> </form> <Form action="<%=str%>" method="post"> 显示上一页:<Input Type="hidden" name="a" value="previous"> <input type=submit value="previous"> </form> <Form action="<%=str%>" method="post"> 输入要显示的页数:<Input Type="text" name="a" value="1" style="text-align:right"> <input type=submit value="submit"> </form> <% String s=request.getParameter("a"); if(s==null){ s="1"; }else if(s.equals("first")){ handlePage.setShowPage(1); //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute(1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else if(s.equals("next")){ int n=handlePage.getShowPage(); //获取目前的页数 n=(n+1); //将页数增1 if(n>handlePage.getPageCount()) n=1; handlePage.setShowPage; //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else if(s.equals("previous")){ int n=handlePage.getShowPage(); //获取目前的页数 n=n-1; //将页数减1 if(n<=0) n=handlePage.getPageCount(); handlePage.setShowPage; //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else{ int m=Integer.parseInt; //把输入的字符转化为整型数 handlePage.setShowPage; //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); int n=handlePage.getShowPage(); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); } %> </CENTER> </BODY> </HTML> 数据库的表结构是: create table students( id varchar(10),name varchar(10),math int,english int,physics int) 数据库名是:student 注意:本例连接Sql数据库方式是直连,需要三个Sql的直连包。 |
5.请见下面程序,但有一处我也不明白,请高手解答。见:问题在这里 [Re: itceolb2004] | Copy to clipboard |
Posted by: henbane Posted on: 2005-05-30 10:56 我们使用一个beans来实现数据库的记录的分页显示,方法有很多种。本例是以ResultSet类的游标来实现分页的。 本例由:分页显示记录的页面Jsp 分页beans 数据库连接beans组成 本例在Tomcat下测试通过。 关键思想: 假设总记录数为m,每页显示的记录数是n,那么总页数的计算公式是: 总页数=(m%n)==0?(m/n):(m/n+1); 如果准备显示第p页的内容,应当把游标移动到第(p-1)*n+1条记录处。 源代码如下: 1、分页beans pageNumber.java package bean; public class PageNumber { int rowCount=1, //总的记录数 pageSize=1, //每页显示的记录数 showPage=1, //设置预显示的页码数 pageCount=1; //分页之后的总页数 public void setRowCount(int n){ rowCount=n; } public int getRowCount(){ return rowCount; } public void setPageCount(int r,int p){ rowCount=r; pageSize=p; pageCount=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1); //计算分页之后的总页数 } public int getPageCount(){ return pageCount; } public void setShowPage(int n){ showPage=n; } public int getShowPage(){ return showPage; } public void setPageSize(int n){ pageSize=n; } public int getPageSize(){ return pageSize; } } 2、数据库连接beans package bean; import java.sql.*; import java.io.*; public class MyConnection{ Connection con=null; //声明一个共享的连接对象 Statement stat=null; ResultSet rs=null; int rowCount=0; //总的记录数 public MyConnection(){ try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); }catch(ClassNotFoundException e){ System.out.print(e); } try{ con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=student;","sa",""); }catch(SQLException e){ System.out.print(e); } } public ResultSet myQuery(String sql) throws SQLException{ //结果集的游标可上下移动,但当数据库变化时,结果集不变, //不能用结果集更新数据库中的表 stat=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //返回可滚动的结果集 rs=stat.executeQuery(sql); return rs; } public void myClose() throws SQLException{ con.close(); } } 3、分页显示记录的JSP页面 <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <%@page import="bean.PageNumber"%> <%@page import="bean.MyConnection"%> <%@page import="java.io.*"%> <jsp:useBean id="handlePage" class="bean.PageNumber" scope="session"/> <jsp:useBean id="myCon" class="bean.MyConnection" scope="application"/> <HTML> <BODY bgcolor=cyan><Size=1> <CENTER> <BR><BR> <%! // 以表格形式显示数据库记录的方法 问题在这里 /*下面的JspWriter out代表什么呢? 求解 */ public void showList(ResultSet rs,JspWriter out,int n){ try{ out.print("<BR><BR><Table border=2><tr><th>学号<th>姓名<th>数学<th>英语<th>物理</tr>"); for(int i=1;i<=n;i++){ out.print("<tr>"); String number=rs.getString(1); out.print("<td>"+number+"</td>"); String name=rs.getString(2); out.print("<td>"+name+"</td>"); int math=rs.getInt(3); out.print("<td>"+math+"</td>"); int english=rs.getInt(4); out.print("<td>"+english+"</td>"); int physics=rs.getInt(5); out.print("<td>"+physics+"</td>"); out.print("</tr>"); rs.next(); } out.print("</table>"); }catch(Exception e){ System.out.println(e); } } %> <% ResultSet rs=null; int rowCount=0; //总的记录数 try{ //返回可滚动的结果集 rs=myCon.myQuery("select * from students"); //将游标移动到最后一行 rs.last(); //获取记录总数 rowCount=rs.getRow(); //设置每页显示的记录数 handlePage.setPageSize(2); //计算总页数 handlePage.setPageCount(rowCount,handlePage.getPageSize()); out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+handlePage.getPageSize()+"条记录"); }catch(SQLException e){ out.print(e); } %> <%--选择显示某页的表单--%> <%String str=response.encodeRedirectURL("showList.jsp"); //获取showList.jsp的url%> <Form action="<%=str%>" method="post"> 显示首页:<Input Type="hidden" name="a" value="first"> <input type=submit value="first"> </form> <Form action="<%=str%>" method="post"> 显示下一页:<Input Type="hidden" name="a" value="next"> <input type=submit value="next"> </form> <Form action="<%=str%>" method="post"> 显示上一页:<Input Type="hidden" name="a" value="previous"> <input type=submit value="previous"> </form> <Form action="<%=str%>" method="post"> 输入要显示的页数:<Input Type="text" name="a" value="1" style="text-align:right"> <input type=submit value="submit"> </form> <% String s=request.getParameter("a"); if(s==null){ s="1"; }else if(s.equals("first")){ handlePage.setShowPage(1); //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute(1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else if(s.equals("next")){ int n=handlePage.getShowPage(); //获取目前的页数 n=(n+1); //将页数增1 if(n>handlePage.getPageCount()) n=1; handlePage.setShowPage(n); //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else if(s.equals("previous")){ int n=handlePage.getShowPage(); //获取目前的页数 n=n-1; //将页数减1 if(n<=0) n=handlePage.getPageCount(); handlePage.setShowPage(n); //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); }else{ int m=Integer.parseInt(s); //把输入的字符转化为整型数 handlePage.setShowPage(m); //设置预显示页 out.print("目前显示第"+handlePage.getShowPage()+"页"); int n=handlePage.getShowPage(); //将游标移到指定的位置 rs.absolute((n-1)*handlePage.getPageSize()+1); //显示该页的内容 showList(rs,out,handlePage.getPageSize()); } %> </CENTER> </BODY> </HTML> 数据库的表结构是: create table students( id varchar(10),name varchar(10),math int,english int,physics int) 数据库名是:student 注意:本例连接Sql数据库方式是直连,需要三个Sql的直连包。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |