[求助]JSP页面MVC模式(JSP+JavaBean)分页代码! 求JSP页面MVC模式(JSP+JavaBean)分页代码!最好是JSP+JavaBean实现的,不需要struts,最好也不要用servlet的。别告诉我用displaytag、struts、hibernater的。能够贴出来更好,不行请发我的qq及邮箱:[email protected]可行的话100分就直接给你。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看有什么帮助吗。呵呵package com.jsp.common;import java.util.*;import java.sql.*;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import com.db.common.*;public class FenYe{ResultSet CountTopicrs=null; //初始化总记录数Rs变量ResultSet Pagirs=null; //初始化分页时每页的记录集数Rs变量private int intCountTopic=0; //主题总数,即select选出的、库中所有记录总数public int intPageSize; //每页显示主题数,即每页显示的记录总数public int intPageCount; //总页数public int intPage=0; //当前页数private String Countsql=null,Pagisql=null,str=null,str_where=null;private String str_parameter="";//public static int pages_n=1; //传分页参数值private String nowPage; //初始化当前页intPage变量,以准确便获取当前页,即获取当前页的具体页号。private String HttpFile; //当前的地址栏的文件,即具体jsp文件。//接收传分页参数public void setPages(int n){ intPageSize = n;}/*功能:接收参数组织SQL语句 *str_table :分页显示的表名 *str_where:分页的where条件 *httpfile :具体jsp文件 *pages :获取地址栏传过来的pages参数 */public ResultSet setQuerysql(String str_table,String str_where, String httpfile,String pages)throws SQLException{ResultSet r=null;this.nowPage=pages;this.HttpFile=httpfile;//分页文件名Countsql="select count(*) from "+str_table+" "+str_where;Pagisql="select * from "+str_table+" "+str_where;try{r=querySql(Countsql,Pagisql);}catch(SQLException _ex){System.out.println(_ex);}return r;}/*功能:接收参数进行首尾页判断 *Countsql:总记录的Query字符串。[形式为select count(*) from tablename] *Pagisql :要分页的Query字符串。[形式为select * from tablename where ...] *request :参数传递过程中的变量。[用来控制翻页时的pages变量] */public ResultSet querySql(String Countsql,String Pagisql)//,HttpServletRequest requestthrows SQLException{//获取当前文件名。//HttpFile=request.getRequestURI();//获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]//nowPage=request.getParameter("pages");//由参数HttpServletRequest request传递而来 DBAccess db = new DBAccess();//连接数据库 Connection conn=null; db.setConnection("ora"); conn=db.getConnection(); Statement stm = null; stm=conn.createStatement();if (nowPage==null) { intPage=1; }else { intPage=Integer.parseInt(nowPage); if (intPage<1) intPage=1; }//end else//获取总记录数的结果集。//CountTopicrs=db.executeQuery(Countsql);CountTopicrs=stm.executeQuery(Countsql);if (CountTopicrs.next()){intCountTopic=CountTopicrs.getInt(1); //获取第一个字段的整型}//获取总页数。intPageCount = (intCountTopic+intPageSize-1)/intPageSize;//如果当前页大于总页数,则当前页等于总页数。//=最后一页if (intPage>intPageCount){intPage=intPageCount;}//关闭总主题数的数据集。CountTopicrs.close();//获取执行分页的结果集。Pagirs=stm.executeQuery(Pagisql);stm.close();db.disconnect();return Pagirs;}//end querySql function.//获取记录总数。public int getCountTopic(){return intCountTopic;}//获取总页数。public int getPageCount(){return intPageCount;}//获取当前页数。public int getIntPage(){return intPage;}//获取当前页的数据。boodata为True,表示要加入该数据到当前页。//这里可能会在JSP调用时影响速度[因为调用时要多一层循环],因此放到JSP中嵌入,待改进。//该代码暂时保留。// public boolean getData(){// boolean boodata=false;// if (intPageCount>0)// {// try// {// while (Pagirs.next())// {// i++;/// if (i>((intPage-1)*intPageSize) &&(i<=intPage*intPageSize))// {// boodata=true;// }// } //endwhile.// }//end try.// catch(Exception e){// System.out.println(e.toString());// }// } //endif.// return boodata;// } //end getData();//设置分页参数public void setPfoot(String str){this.str_parameter+=str;}//分页栏函数。public String PageFooter() {String str = "";int next, prev;prev=intPage-1;next=intPage+1;str +="<font style='font-size: 9pt'>总计<font color='red'>"+getCountTopic()+"</font>条记录,"+"【共<font color='red'>"+getPageCount()+"</font>页】";str +="【条"+intPageSize+"/页】 当前第<font color='red'>"+getIntPage()+"</font>页(列出第"+((intPageSize*getIntPage()+1)-intPageSize)+"到第"+(getIntPage()*intPageSize)+"条) ";//getIntPage()*intPageSizeif(intPage>1)str += " <A href=" + HttpFile + "?pages=1"+str_parameter+">第一页</A> ";else str += " 第一页 ";if(intPage>1)str += " <A href=" + HttpFile + "?pages=" + prev +str_parameter+ ">上一页</A> ";else str += " 上一页 ";if(intPage<intPageCount)str += " <A href=" + HttpFile + "?pages=" + next +str_parameter+ ">下一页</A> ";else str += " 下一页 ";if(intPageCount>1&&intPage!=intPageCount)str += " <A href=" + HttpFile + "?pages=" + intPageCount +str_parameter+ ">最后页</A>";else str += " 最后页 </font>";str +=" 转到<INPUT TYPE='text'NAME='go' size='2'>页 <input type='submit' name='Submit' value='go'>";return str;}//关闭数据库连接///public void closeConn()//{ //db.closeStmt();//db.closeConn();//}} //end. PageNumber.java:package tom.jiafei;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; int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ; pageCount=n; } 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; }}/////////////////////////////////////////////////////////////////////<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="tom.jiafei.Login" %><%@ page import="tom.jiafei.PageNumber" %><%@ page import="java.io.*" %><jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" ></jsp:useBean><jsp:useBean id="login" class="tom.jiafei.Login" scope="session" ></jsp:useBean><% //如果客户直接进入该页面将被转向登录页面。 if(session.isNew()) {response.sendRedirect("login.jsp"); } //如果没有成功登录将被转向登录页面 String success=login.getSuccess(); if(success==null) {success=""; } if(!(success.equals("ok"))) {response.sendRedirect("login.jsp"); }%><HTML><BODY ><Font size=1><%@ include file="head.txt" %><P> 会员列表: <%! //声明一个共享的连接对象: Connection con=null; //显示数据库记录的方法: public void showList(ResultSet rs,javax.servlet.jsp.JspWriter out,int n,String find) {try { out.print("<Table Border>"); out.print("<TR>"); out.print("<TH width=50>"+"<Font size=1>"+"会员名"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"性别"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"email"+"</FONT>"); out.print("<TH width=70>"+"<Font size=1>"+"浏览详细信息"+"</FONT>"); out.print("</TR>"); for(int i=1;i<=n;i++) { String logname=rs.getString("logname"); String email=rs.getString("email"); out.print("<TR>"); out.print("<TD >"+logname+"</TD>"); out.print("<TD >"+rs.getString("sex")+"</TD>"); out.print("<TD >"+email+"</TD>"); //在每个会员的后面显示一个表单,该表单将内容提交到find.jsp, //以便查看该会员的详细信息: String s1="<Form action="+find+" method=get>"; String s2="<input type=hidden name=logname value="+logname+">"; String s3="<input type=submit value=详细信息></FORM> "; String s=s1+s2+s3; out.print("<TD >"+s+"</TD>"); out.print("</TR>") ; rs.next(); } out.print("</Table>"); } catch(Exception e1) {} } %> <% Statement sql=null; ResultSet rs=null; int rowCount=0; //总的记录数。 String logname=""; //第一个客户负责建立连接对象: if(con==null) { try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) {out.print(e); } try {con=DriverManager.getConnection("jdbc:odbc:friend","",""); sql= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。 rs.last(); //将游标移动到最后一行。 int number=rs.getRow();//获取最后一行的行号。 rowCount=number; //获取记录数。 handlePage.setPageSize(3); //设置每页显示的记录数。 handlePage.setShowPage(1); //设置欲显示的页码数。 handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。 out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+ handlePage.getPageSize()+"条记录"); } catch(SQLException e) {out.print(e); } } //其它客户通过同步块使用这个连接: else { synchronized(con) { try { sql= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。 rs.last(); //将游标移动到最后一行。 int number=rs.getRow(); //获取最后一行的行号。 rowCount=number; //获取记录数。 handlePage.setPageSize(3); //设置每页显示的记录数。 handlePage.setShowPage(1); //设置欲显示的页码数。 handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。 out.print("共有"+handlePage.getPageCount()+"页,"); out.print("每页显示"+ handlePage.getPageSize()+"条记录"); } catch(SQLException e) {out.print(e); } } } %> <%--选择显示某页的表单 --%><%String str=response.encodeURL("showMember.jsp"); String find=response.encodeURL("find.jsp");%> <Form action="<%=str%>" method="post" > 输入欲要显示的页<Input type="text" name="ok" value="1"> <Input type="submit" value="submit"> </FORM> <% //获取表单提交的信息: String s=request.getParameter("ok"); if(s==null) {s="1"; } 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(),find); //显示该页的内容。 %></FONt></BODY></HTML> 以下是JSP分页的参考代码,只需要适当地做些修改,就可以投入到您的项目中去了:)不管什么时候,学东西我们注重的是分析过程,结果反到是次要的。所以,请大家还是好好分析代码吧:)//留言beanpackage userinfobean;/*** <p>Title: </p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2004</p>* <p>Company: </p>* @author not attributable* @version 1.0*/public class memoBean { private String id;//1.用户名 private String email;//2.密码 private String content;//3.留言 public memoBean() { } //1.用户名 public void setId(String s){ this.id=s; } //2.密码 public void setEmail(String s){ this.email=s; } //3.留言 public void setContent(String s){ this.content=s; } //1.用户名 public String getId( ){ return this.id; } //2.密码 public String getEmail(){ return this.email; } //3.留言 public String getContent(){ return this.content; }}//// 用于数据库操作的bean package userinfobean;import userinfobean.*;import java.io.*;import java.util.*;import java.sql.*;public class databaseBean{ private String dbName; private String dbUser; private String dbPass; private Vector memoVector; Connection connection; public databaseBean(){ dbName=new String("×××××××"); dbUser=new String("××××××"); dbPass=new String("×××××××"); String connectionUrl="jdbc:mysql://localhost/"+dbName; try{ Class.forName("org.gjt.mm.mysql.Driver"); connection=DriverManager.getConnection(connectionUrl,dbUser,dbPass); } catch(Exception e){ System.out.println(e.toString()); } } public void dbQueryMemos(){ try{ memoVector=new Vector(); Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery("select * from memo;"); while(rs.next()){ memoBean temp=new memoBean(); temp.setId(rs.getString(2)); temp.setEmail(rs.getString(3)); temp.setContent(rs.getString(4)); memoVector.add(temp); } } catch(SQLException e){ System.out.println(e.toString()); } } public void setDbName(String s){ this.dbName=s; } public void setDbUser(String s){ this.dbUser=s; } public void setDbPass(String s){ this.dbPass=s; } public String getDbName(){ return this.dbName; } public String getDbUser(){ return this.dbUser; } public String getDbPass(){ return this.dbPass; } public Vector getMemoVector(){ return this.memoVector; }} ///以下是网页源码<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@ page language="java" import="java.util.*" %><%@ page import="java.text.*" %><%@ page import="userinfobean.*" %><jsp:useBean id="memoInfo" scope="page" class="userinfobean.memoBean"/><jsp:useBean id="memoQuery" scope="page" class="userinfobean.databaseBean"/><%!int totalPages;int countPerPage=3;int totalCount;int currentPage=0;int currentStart;%><%memoQuery.dbQueryMemos();Vector vt=memoQuery.getMemoVector();totalCount=vt.size();totalPages=totalCount/countPerPage;if(totalCount%countPerPage>0)totalPages=totalPages+1;if(request.getParameter("page")==null){currentPage=1;}else{currentPage=Integer.parseInt(request.getParameter("page"));if(currentPage>totalPages)currentPage=totalPages;if(currentPage<1)currentPage=1;}currentStart=totalCount-1-countPerPage * (currentPage-1);%><html><head><title>NetGreen</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" href="main.css"> </head><script language="JavaScript" >function page_check(){if(document.pageForm.page.value==""){alert("请输入页数");document.pageForm.page.focus();return false;}return true;}</script><body bgcolor="ffffff" ><center> <table width="800" border="0" height="622"> <tr> <td height="71" align="center" valign="middle"> <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC"> <tr> <td width="19%" height="60" align="left" valign="bottom" bgcolor="#FFFFFF"><b><font size="4" color="#00cc66" ><img src="image/logo.gif" width="156" height="60"></font></b></td> <td width="57%" align="left" valign="bottom" bgcolor="#FFFFFF"><img src="image/banner.gif" width="100%" height="60"></td> <td width="24%" align="left" valign="bottom"> <table width="102%" height="60" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC" bgcolor="#FFFFFF"> <tr> <td width="50%" height="27" align="center">上 传</td> <td width="50%" align="center">收藏本页</td> </tr> <tr> <td height="21" align="center" bgcolor="#FFFFFF" >退 出 </td> <td align="center"><a href="memoForm.htm" target="_self">我要留言</a></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td height="31"><table width="100%" border="1" bordercolor="#0099CC"> <tr bgcolor="#00CC66"> <td width="12%" height="23" align="center" bgcolor="#CCFFFF"><a href="index.htm" >首页</a></td> <td width="12%" align="center" bgcolor="#CCFFFF"><a href="loginForm.htm" >登陆</a></td> <td width="12%" align="center" bgcolor="#CCFFFF"> </td> <td width="12%" align="center" bgcolor="#CCFFFF"> </td> <td width="12%" align="center" bgcolor="#CCFFFF" > </td> <td width="12%" align="center" bgcolor="#CCFFFF"> </td> <td width="12%" align="center" bgcolor="#CCFFFF"><a href="memoDisplay.jsp" >留言板</a></td> <td width="12%" align="center" bgcolor="#CCFFFF"><a href="registForm.htm">注册</a></td> </tr> </table></td> </tr> <tr> <td height="435" align="center" valign="top" nowrap> <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC"> <tr> <td width="18%" height="431" align="center" valign="middle" bgcolor="#CCFFFF"> </td> <td width="83%" align="center" valign="top" bgcolor="#FFFFFF"><table width="100%" border="1"><form name="pageForm" method="post" onSubmit="return page_check();"action="memoDisplay.jsp"> <tr> <td width="36%">共有留言<%out.print(totalPages);%> 页,现在是第<%out.print(currentPage);%> 页</td> <td width="64%"> <a href="memoDisplay.jsp?page=<%=currentPage-1%>" >上一页 </a> <a href="memoDisplay.jsp?page=<%=currentPage+1%>" >下一页 </a> <a href="memoDisplay.jsp?page=1" >首页 </a> <a href="memoDisplay.jsp?page=<%=totalPages%>" >尾页 </a> <input type="submit" name="Submit" value="G0"> <input name="page" type="text" size="10"> 页</td> </tr> </form></table> <% for(int i=0;i<countPerPage&¤tStart-i>=0;i++) { memoInfo.setId(((memoBean)vt.get(currentStart-i)).getId()); memoInfo.setEmail(((memoBean)vt.get(currentStart-i)).getEmail()); memoInfo.setContent(((memoBean)vt.get(currentStart-i)).getContent()); out.print("<table width='100%' border='1' ><tr><td width='19%'>"); out.print(memoInfo.getId()); out.print("</td><td width='81%'>"); out.print(memoInfo.getEmail()); out.print("</td></tr><tr><td height='44' colspan='2'>"); out.print(memoInfo.getContent()); out.print("</td></tr></table> "); out.print("<br>"); } %> </td> </tr> </table> </td> </tr> <tr> <td height="73" align="center" valign="top" nowrap> <table width="100%" border="0"> <tr> <td height="21" align="center" bgcolor="#FFFFFF"><hr width="85%" noshade color="#00CC66"></td> </tr> <tr> <td height="12" align="center">Copyright @ HomeLee. All rights reserved. </td> </tr> <tr> <td height="12" align="center" bgcolor="#FFFFFF"> </td> </tr> </table></td> </tr> </table> </center></body></html> 先谢谢楼上提供代码的几位!给你们预留70分。我想晚2天结贴,想弄明白。后面的朋友,请发挥助人为乐和开源的精神,我可以继续加分!问appleangle(苹果熟了): //分页栏函数。public String PageFooter()要怎样实现啊,httpfile的jsp要怎么写如果可以请你也帮我回答下面的问题。问xiongbing528(多情剑客无情剑):showList方法为什么能实现分页,我有点不理解。是通过showList(rs,out,handlePage.getPageSize(),find); //显示该页的内容?rs.absolute((n-1)*handlePage.getPageSize()+1);find.jsp要怎么实现啊,需要用find.jsp吗。问allenjay2003() :有点相似的问题,<a href="memoDisplay.jsp?page=1" >首页 </a>能够实现分页是通过jsp页面的方法?楼上几位的sql语句都是SELECT * FROM member,虽然定义了页面显示数、显示条数之类的参数,但是不明白分页是如何实现的,是通过jsp页面的一个方法,只要传参数page=?就可以了?page=?是通过什么传进去的,因为我看sql语句并没有写条件查询,能把原理讲一下吗,谢谢了。 http://blog.csdn.net/shan_wei/archive/2005/04/27/364912.aspx 如果 / 多情剑客无情剑/ 能把数据库连接那段也写到一个Bean 里JSP页面显示可能会快点~ 电子商务 产品列表页面价格显示问题 求applet折线图制作方法,不能用jfreechart等类库,会做的进 struts2 循环一对多得关系 学习中遇到的一些问题~~关于Servlet! 请大家珍惜生命,并为死去的同胞们默哀,也希望老紫竹不要太伤感,人还要坚强的活着! 一个多选框的问题 ~~~~~求教一个关于JSP的问题~~~~ 如何不让客户端保存密码? 怎么才能把做好的软件放到互联网上测试? 请问如何防止页面被缓存 如何固定表格的宽度,无论表里的数据有多少,都不上表格的宽度发变化,让表格的高度变化 tomcat5.0.28的配置问题,解决马上送分
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.db.common.*;public class FenYe
{
ResultSet CountTopicrs=null; //初始化总记录数Rs变量
ResultSet Pagirs=null; //初始化分页时每页的记录集数Rs变量private int intCountTopic=0; //主题总数,即select选出的、库中所有记录总数
public int intPageSize; //每页显示主题数,即每页显示的记录总数
public int intPageCount; //总页数
public int intPage=0; //当前页数
private String Countsql=null,Pagisql=null,str=null,str_where=null;
private String str_parameter="";
//public static int pages_n=1; //传分页参数值private String nowPage; //初始化当前页intPage变量,以准确便获取当前页,即获取当前页的具体页号。
private String HttpFile; //当前的地址栏的文件,即具体jsp文件。//接收传分页参数
public void setPages(int n)
{
intPageSize = n;
}/*功能:接收参数组织SQL语句
*str_table :分页显示的表名
*str_where:分页的where条件
*httpfile :具体jsp文件
*pages :获取地址栏传过来的pages参数
*/
public ResultSet setQuerysql(String str_table,String str_where, String httpfile,String pages)throws SQLException
{
ResultSet r=null;
this.nowPage=pages;
this.HttpFile=httpfile;//分页文件名
Countsql="select count(*) from "+str_table+" "+str_where;
Pagisql="select * from "+str_table+" "+str_where;
try{
r=querySql(Countsql,Pagisql);
}catch(SQLException _ex)
{System.out.println(_ex);}
return r;
}/*功能:接收参数进行首尾页判断
*Countsql:总记录的Query字符串。[形式为select count(*) from tablename]
*Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]
*request :参数传递过程中的变量。[用来控制翻页时的pages变量]
*/
public ResultSet querySql(String Countsql,String Pagisql)//,HttpServletRequest request
throws SQLException{
//获取当前文件名。
//HttpFile=request.getRequestURI();
//获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]
//nowPage=request.getParameter("pages");//由参数HttpServletRequest request传递而来
DBAccess db = new DBAccess();//连接数据库
Connection conn=null;
db.setConnection("ora");
conn=db.getConnection();
Statement stm = null;
stm=conn.createStatement();if (nowPage==null)
{ intPage=1; }
else
{
intPage=Integer.parseInt(nowPage);
if (intPage<1)
intPage=1;
}//end else//获取总记录数的结果集。
//CountTopicrs=db.executeQuery(Countsql);
CountTopicrs=stm.executeQuery(Countsql);if (CountTopicrs.next())
{
intCountTopic=CountTopicrs.getInt(1); //获取第一个字段的整型
}
//获取总页数。
intPageCount = (intCountTopic+intPageSize-1)/intPageSize;
//如果当前页大于总页数,则当前页等于总页数。//=最后一页
if (intPage>intPageCount)
{
intPage=intPageCount;
}
//关闭总主题数的数据集。
CountTopicrs.close();//获取执行分页的结果集。
Pagirs=stm.executeQuery(Pagisql);
stm.close();
db.disconnect();
return Pagirs;
}//end querySql function.//获取记录总数。
public int getCountTopic()
{
return intCountTopic;
}//获取总页数。
public int getPageCount()
{
return intPageCount;
}//获取当前页数。
public int getIntPage()
{
return intPage;
}//获取当前页的数据。boodata为True,表示要加入该数据到当前页。
//这里可能会在JSP调用时影响速度[因为调用时要多一层循环],因此放到JSP中嵌入,待改进。
//该代码暂时保留。
// public boolean getData(){
// boolean boodata=false;
// if (intPageCount>0)
// {
// try
// {
// while (Pagirs.next())
// {
// i++;
/// if (i>((intPage-1)*intPageSize) &&(i<=intPage*intPageSize))
// {
// boodata=true;
// }
// } //endwhile.
// }//end try.
// catch(Exception e){
// System.out.println(e.toString());
// }
// } //endif.
// return boodata;
// } //end getData();//设置分页参数
public void setPfoot(String str)
{
this.str_parameter+=str;
}//分页栏函数。
public String PageFooter() {
String str = "";
int next, prev;
prev=intPage-1;
next=intPage+1;
str +="<font style='font-size: 9pt'>总计<font color='red'>"+getCountTopic()+"</font>条记录,"+"【共<font color='red'>"+getPageCount()+"</font>页】";
str +="【条"+intPageSize+"/页】 当前第<font color='red'>"+getIntPage()+"</font>页(列出第"+((intPageSize*getIntPage()+1)-intPageSize)+"到第"+(getIntPage()*intPageSize)+"条) ";//getIntPage()*intPageSize
if(intPage>1)
str += " <A href=" + HttpFile + "?pages=1"+str_parameter+">第一页</A> ";
else str += " 第一页 ";if(intPage>1)
str += " <A href=" + HttpFile + "?pages=" + prev +str_parameter+ ">上一页</A> ";
else str += " 上一页 ";if(intPage<intPageCount)
str += " <A href=" + HttpFile + "?pages=" + next +str_parameter+ ">下一页</A> ";
else str += " 下一页 ";if(intPageCount>1&&intPage!=intPageCount)
str += " <A href=" + HttpFile + "?pages=" + intPageCount +str_parameter+ ">最后页</A>";
else str += " 最后页 </font>";
str +=" 转到<INPUT TYPE='text'NAME='go' size='2'>页 <input type='submit' name='Submit' value='go'>";
return str;
}
//关闭数据库连接
///public void closeConn()
//{
//db.closeStmt();
//db.closeConn();
//}} //end.
package tom.jiafei;
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;
int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ;
pageCount=n;
}
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;
}
}/////////////////////////////////////////////////////////////////////<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="tom.jiafei.Login" %>
<%@ page import="tom.jiafei.PageNumber" %>
<%@ page import="java.io.*" %>
<jsp:useBean id="handlePage" class="tom.jiafei.PageNumber" scope="session" >
</jsp:useBean>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<% //如果客户直接进入该页面将被转向登录页面。
if(session.isNew())
{response.sendRedirect("login.jsp");
}
//如果没有成功登录将被转向登录页面
String success=login.getSuccess();
if(success==null)
{success="";
}
if(!(success.equals("ok")))
{response.sendRedirect("login.jsp");
}
%>
<HTML>
<BODY ><Font size=1>
<%@ include file="head.txt" %>
<P> 会员列表:
<%! //声明一个共享的连接对象:
Connection con=null;
//显示数据库记录的方法:
public void showList(ResultSet rs,javax.servlet.jsp.JspWriter out,int n,String find)
{try
{
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=50>"+"<Font size=1>"+"会员名"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"性别"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"email"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"浏览详细信息"+"</FONT>");
out.print("</TR>");
for(int i=1;i<=n;i++)
{
String logname=rs.getString("logname");
String email=rs.getString("email");
out.print("<TR>");
out.print("<TD >"+logname+"</TD>");
out.print("<TD >"+rs.getString("sex")+"</TD>");
out.print("<TD >"+email+"</TD>");
//在每个会员的后面显示一个表单,该表单将内容提交到find.jsp,
//以便查看该会员的详细信息:
String s1="<Form action="+find+" method=get>";
String s2="<input type=hidden name=logname value="+logname+">";
String s3="<input type=submit value=详细信息></FORM> ";
String s=s1+s2+s3;
out.print("<TD >"+s+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
}
catch(Exception e1) {}
}
%>
<%
Statement sql=null;
ResultSet rs=null;
int rowCount=0; //总的记录数。
String logname="";
//第一个客户负责建立连接对象:
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try
{con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。
rs.last(); //将游标移动到最后一行。
int number=rs.getRow();//获取最后一行的行号。
rowCount=number; //获取记录数。
handlePage.setPageSize(3); //设置每页显示的记录数。
handlePage.setShowPage(1); //设置欲显示的页码数。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。
out.print("共有"+handlePage.getPageCount()+"页,");
out.print("每页显示"+ handlePage.getPageSize()+"条记录");
}
catch(SQLException e)
{out.print(e);
}
}
//其它客户通过同步块使用这个连接:
else
{ synchronized(con)
{ try { sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM member"); //返回可滚动的结果集。
rs.last(); //将游标移动到最后一行。
int number=rs.getRow(); //获取最后一行的行号。
rowCount=number; //获取记录数。
handlePage.setPageSize(3); //设置每页显示的记录数。
handlePage.setShowPage(1); //设置欲显示的页码数。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//计算总页数。
out.print("共有"+handlePage.getPageCount()+"页,");
out.print("每页显示"+ handlePage.getPageSize()+"条记录");
}
catch(SQLException e)
{out.print(e);
}
}
}
%>
<%--选择显示某页的表单 --%>
<%String str=response.encodeURL("showMember.jsp");
String find=response.encodeURL("find.jsp");
%>
<Form action="<%=str%>" method="post" >
输入欲要显示的页<Input type="text" name="ok" value="1">
<Input type="submit" value="submit">
</FORM>
<% //获取表单提交的信息:
String s=request.getParameter("ok");
if(s==null)
{s="1";
}
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(),find); //显示该页的内容。
%>
</FONt>
</BODY>
</HTML>
package userinfobean;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class memoBean { private String id;//1.用户名
private String email;//2.密码
private String content;//3.留言 public memoBean() {
}
//1.用户名
public void setId(String s){
this.id=s;
}
//2.密码
public void setEmail(String s){
this.email=s;
}
//3.留言
public void setContent(String s){
this.content=s;
}
//1.用户名
public String getId( ){
return this.id;
}
//2.密码
public String getEmail(){
return this.email;
}
//3.留言
public String getContent(){
return this.content;
}
}
//// 用于数据库操作的bean
package userinfobean;import userinfobean.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class databaseBean{
private String dbName;
private String dbUser;
private String dbPass;
private Vector memoVector; Connection connection; public databaseBean(){
dbName=new String("×××××××");
dbUser=new String("××××××");
dbPass=new String("×××××××");
String connectionUrl="jdbc:mysql://localhost/"+dbName;
try{
Class.forName("org.gjt.mm.mysql.Driver");
connection=DriverManager.getConnection(connectionUrl,dbUser,dbPass);
}
catch(Exception e){
System.out.println(e.toString());
}
} public void dbQueryMemos(){
try{
memoVector=new Vector();
Statement stmt=connection.createStatement();
ResultSet rs=stmt.executeQuery("select * from memo;");
while(rs.next()){
memoBean temp=new memoBean();
temp.setId(rs.getString(2));
temp.setEmail(rs.getString(3));
temp.setContent(rs.getString(4));
memoVector.add(temp);
} }
catch(SQLException e){
System.out.println(e.toString());
} } public void setDbName(String s){
this.dbName=s;
}
public void setDbUser(String s){
this.dbUser=s;
}
public void setDbPass(String s){
this.dbPass=s;
} public String getDbName(){
return this.dbName;
}
public String getDbUser(){
return this.dbUser;
}
public String getDbPass(){
return this.dbPass;
}
public Vector getMemoVector(){
return this.memoVector; }}
<%@ page language="java" import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="userinfobean.*" %>
<jsp:useBean id="memoInfo" scope="page" class="userinfobean.memoBean"/>
<jsp:useBean id="memoQuery" scope="page" class="userinfobean.databaseBean"/>
<%!
int totalPages;
int countPerPage=3;
int totalCount;
int currentPage=0;
int currentStart;
%>
<%
memoQuery.dbQueryMemos();
Vector vt=memoQuery.getMemoVector();
totalCount=vt.size();
totalPages=totalCount/countPerPage;
if(totalCount%countPerPage>0)totalPages=totalPages+1;
if(request.getParameter("page")==null)
{
currentPage=1;
}
else
{
currentPage=Integer.parseInt(request.getParameter("page"));
if(currentPage>totalPages)currentPage=totalPages;
if(currentPage<1)currentPage=1;
}
currentStart=totalCount-1-countPerPage * (currentPage-1);
%>
<html>
<head>
<title>NetGreen</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="main.css">
</head>
<script language="JavaScript" >
function page_check()
{
if(document.pageForm.page.value=="")
{alert("请输入页数");
document.pageForm.page.focus();
return false;
}
return true;
}</script>
<body bgcolor="ffffff" ><center>
<table width="800" border="0" height="622">
<tr>
<td height="71" align="center" valign="middle"> <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC">
<tr>
<td width="19%" height="60" align="left" valign="bottom" bgcolor="#FFFFFF"><b><font size="4" color="#00cc66" ><img src="image/logo.gif" width="156" height="60"></font></b></td>
<td width="57%" align="left" valign="bottom" bgcolor="#FFFFFF"><img src="image/banner.gif" width="100%" height="60"></td>
<td width="24%" align="left" valign="bottom"> <table width="102%" height="60" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC" bgcolor="#FFFFFF">
<tr>
<td width="50%" height="27" align="center">上 传</td>
<td width="50%" align="center">收藏本页</td>
</tr>
<tr>
<td height="21" align="center" bgcolor="#FFFFFF" >退 出 </td>
<td align="center"><a href="memoForm.htm" target="_self">我要留言</a></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td height="31"><table width="100%" border="1" bordercolor="#0099CC">
<tr bgcolor="#00CC66">
<td width="12%" height="23" align="center" bgcolor="#CCFFFF"><a href="index.htm" >首页</a></td>
<td width="12%" align="center" bgcolor="#CCFFFF"><a href="loginForm.htm" >登陆</a></td>
<td width="12%" align="center" bgcolor="#CCFFFF"> </td>
<td width="12%" align="center" bgcolor="#CCFFFF"> </td>
<td width="12%" align="center" bgcolor="#CCFFFF" > </td>
<td width="12%" align="center" bgcolor="#CCFFFF"> </td>
<td width="12%" align="center" bgcolor="#CCFFFF"><a href="memoDisplay.jsp" >留言板</a></td>
<td width="12%" align="center" bgcolor="#CCFFFF"><a href="registForm.htm">注册</a></td>
</tr>
</table></td>
</tr>
<tr>
<td height="435" align="center" valign="top" nowrap>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0099CC">
<tr>
<td width="18%" height="431" align="center" valign="middle" bgcolor="#CCFFFF">
</td>
<td width="83%" align="center" valign="top" bgcolor="#FFFFFF"><table width="100%" border="1"><form name="pageForm" method="post" onSubmit="return page_check();"action="memoDisplay.jsp">
<tr>
<td width="36%">共有留言<%out.print(totalPages);%> 页,现在是第<%out.print(currentPage);%> 页</td>
<td width="64%">
<a href="memoDisplay.jsp?page=<%=currentPage-1%>" >上一页 </a>
<a href="memoDisplay.jsp?page=<%=currentPage+1%>" >下一页 </a>
<a href="memoDisplay.jsp?page=1" >首页 </a>
<a href="memoDisplay.jsp?page=<%=totalPages%>" >尾页 </a>
<input type="submit" name="Submit" value="G0">
<input name="page" type="text" size="10">
页</td>
</tr>
</form></table>
<%
for(int i=0;i<countPerPage&¤tStart-i>=0;i++)
{
memoInfo.setId(((memoBean)vt.get(currentStart-i)).getId());
memoInfo.setEmail(((memoBean)vt.get(currentStart-i)).getEmail());
memoInfo.setContent(((memoBean)vt.get(currentStart-i)).getContent());
out.print("<table width='100%' border='1' ><tr><td width='19%'>");
out.print(memoInfo.getId());
out.print("</td><td width='81%'>");
out.print(memoInfo.getEmail());
out.print("</td></tr><tr><td height='44' colspan='2'>");
out.print(memoInfo.getContent());
out.print("</td></tr></table> ");
out.print("<br>");
}
%>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="73" align="center" valign="top" nowrap>
<table width="100%" border="0">
<tr>
<td height="21" align="center" bgcolor="#FFFFFF"><hr width="85%" noshade color="#00CC66"></td>
</tr>
<tr>
<td height="12" align="center">Copyright @ HomeLee. All rights reserved.
</td>
</tr>
<tr>
<td height="12" align="center" bgcolor="#FFFFFF"> </td>
</tr>
</table></td>
</tr>
</table>
</center></body>
</html>
我想晚2天结贴,想弄明白。
后面的朋友,请发挥助人为乐和开源的精神,我可以继续加分!问appleangle(苹果熟了):
//分页栏函数。public String PageFooter()要怎样实现啊,httpfile的jsp要怎么写
如果可以请你也帮我回答下面的问题。问xiongbing528(多情剑客无情剑):
showList方法为什么能实现分页,我有点不理解。
是通过showList(rs,out,handlePage.getPageSize(),find); //显示该页的内容?
rs.absolute((n-1)*handlePage.getPageSize()+1);
find.jsp要怎么实现啊,需要用find.jsp吗。问allenjay2003() :
有点相似的问题,<a href="memoDisplay.jsp?page=1" >首页 </a>
能够实现分页是通过jsp页面的方法?楼上几位的sql语句都是SELECT * FROM member,虽然定义了页面显示数、显示条数之类的参数,但是不明白分页是如何实现的,是通过jsp页面的一个方法,只要传参数page=?就可以了?
page=?是通过什么传进去的,因为我看sql语句并没有写条件查询,能把原理讲一下吗,谢谢了。
JSP页面显示可能会快点~