关于分页……

landc 2002-04-14 01:09:05
不用Vector,如何实现象csdn这样的分页方式??????
...全文
34 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
landc 2002-04-14
  • 打赏
  • 举报
回复
那应该如何实现?
huyuefox 2002-04-14
  • 打赏
  • 举报
回复
一点建议:
可以把动态设置表格的颜色也加进去,这样页面不会显得单调,程序也更具灵活性
landc 2002-04-14
  • 打赏
  • 举报
回复
当然:)
tyscon 2002-04-14
  • 打赏
  • 举报
回复
Hafele今天又重新看了JSP论坛(v1.0)的代码,觉得里面有很多是重复的,如分页技术;现在写了一个分页

JavaBean,等有更多的时间再整理一下JSP论坛的代码。当然里面的还有很多逻辑可以用JavaBean来写的,有待

慢慢改进。不过在此声明,我对JavaBean也不是很了解,希望高手多多指点,当然更希望这些垃圾代码能够对

你有所帮助。
该JavaBean必须调用另一个连接数据库的JavaBean,该JavaBean所用到的数据库是MySql,不过你可以通过

修改Linkdb.java来将其改为另一种数据库。为了使代码容易理解,我尽量做了解释。代码具体如下:

一、连接数据库的JavaBean:Linkdb.java

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Linkdb.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
package pagination;

import java.sql.*;

public class Linkdb {
String strDriver="org.gjt.mm.mysql.Driver";
//使用时请具体修改数据库名称,用户名和密码。
String strConn="jdbc:mysql://localhost/forum?user=root&password=admin";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;

public Linkdb()
{
//连接MySql_jdbc驱动程序
try {
Class.forName(strDriver).newInstance();
} catch (Exception E) {
System.err.println("不能连接MySql数据库!");
}
}
//执行Select语句
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(strConn);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}catch(SQLException ex) {
System.err.println("执行SQL语句出错:" + ex.getMessage());
}
return rs;
}

//执行Insert,Update语句
public void executeUpdate(String sql) {
stmt = null;
rs=null;
try {
conn = DriverManager.getConnection(strConn);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
stmt.close();
conn.close();
}
catch(SQLException ex) {
System.err.println("执行SQL语句出错: " + ex.getMessage());
}
}

public void closeStmt(){
try{
stmt.close();
}
catch(SQLException e){
e.printStackTrace();
}
}

public void closeConn(){
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}

二、分页的JavaBean:Pagi.java
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Pagi.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
package pagination;

import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Pagi
{
ResultSet CountTopicrs=null; //初始化总记录数Rs变量
ResultSet Pagirs=null; //初始化分页时Rs变量

public int intCountTopic=0; //主题总数
public int intPageSize; //每页显示主题数
public int intPageCount; //总页数
public int intPage=1; //当前页数
// int i;

public String nowPage; //初始化当前页intPage变量,以准确便获取当前页。
public String HttpFile; //当前的地址栏的文件。

Linkdb db; //定义Linkdb类的一个对象。
//定义构造器,初始化每页显示的主题数和数据库的连接。
public Pagi(){
intPageSize=2;
db = new Linkdb();
}

//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");

if (nowPage==null){ intPage=1; }
else{ intPage=Integer.parseInt(nowPage);

if (intPage<1) intPage=1; }

//获取总记录数的结果集。
CountTopicrs=db.executeQuery(Countsql);
if (CountTopicrs.next())
{
intCountTopic=CountTopicrs.getInt(1);
}
//获取总页数。
intPageCount = (intCountTopic+intPageSize-1)/intPageSize;
//如果当前页大于总页数,则当前页等于总页数。
if (intPage>intPageCount)
{
intPage=intPageCount;
}
//关闭总主题数的数据集。
CountTopicrs.close();

//获取执行分页的结果集。
Pagirs=db.executeQuery(Pagisql);
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 String PageFooter() {
String str = "";
int next, prev;
prev=intPage-1;
next=intPage+1;
str +="共<font color="red">"+getCountTopic()+"</font>篇"+" 分<font

color="red">"+getPageCount()+"</font>页显示";
str +=" 第<font color="red">"+getIntPage()+"</font>页 ";
if(intPage>1)
str += " <A href=" + HttpFile + "?pages=1"+">第一页</A> ";
else str += " 第一页 ";

if(intPage>1)
str += " <A href=" + HttpFile + "?pages=" + prev + ">上一页</A> ";
else str += " 上一页 ";

if(intPage<intPageCount)
str += " <A href=" + HttpFile + "?pages=" + next + ">下一页</A> ";
else str += " 下一页 ";

if(intPageCount>1&&intPage!=intPageCount)
str += " <A href=" + HttpFile + "?pages=" + intPageCount + ">最后页</A>";
else str += " 最后页 ";

return str;
}

} //end.

三、调用实例:testpage.jsp
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%testpage.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
<%@ page language="java" import="java.sql.*, pagination.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="pagi" scope="page" class="pagination.Pagi" />
<html>

<body>
<table border=1 align="center">
<%
String CountQuery="select count(*) from member";
String query = "select * from member";
//读queyrSql方法,返回结果集。
ResultSet rs = pagi.querySql(CountQuery,query, request);
String footer = pagi.PageFooter(); //读分页栏

out.println("<tr><td align="center"><font color="red">姓名</font></td><td align="center"><font

color="red">来自</font></td></tr>");
if (pagi.intPageCount>0)
{
int i=0;
while (rs.next())
{
i++;
String aa="";
String bb="";
if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))
{
aa=rs.getString(2);
bb=rs.getString(4);
%>
<tr><td><%=aa%></td><td><%=bb%></td></tr>
<%
}
} //endwhile.
} //endif.
out.println("<tr><td colspan=2>"+footer+"</td></tr>");
rs.close();
%>
</table>
</body>
</html>
给分,ok?
目录: 一.系统的总体设计………………………………………………………… 3 1.1系统概述…………………………………………………………3 1.2系统功及模块……………………………………………………3 1.3系统实现方案……………………………………………………4 二.数据库设计 ………………………………………………………………4 2.1数据库需求分析……………………………………………………4 2.2数据库设计…………………………………………………………4 三. 详细设计 …………………………………………………………………5 3.1系统基本框架…………………………………………………………5 3.2系统各功能模块设计与实现…………………………………………6 3.2.1公共模块设计 …………………………………………………6 3.2.2新闻浏览界面…………………………………………………6 3.2.3管理员登陆系统………………………………………………7 3.2.4系统管理界面…………………………………………………7 3.2.5发布新闻模块…………………………………………………8 3.2.6修改新闻模块…………………………………………………8 3.2.7删除新闻模块…………………………………………………8 四.运行效果发布 …………………………………………………………… 8 4.1登陆界面………………………………………………………………8 4.2登陆后界面……………………………………………………………9 4.3发布新闻界面…………………………………………………………9 4.4发布后界面……………………………………………………………9 4.5修改新闻模块…………………………………………………………10 4.6删除新闻模块…………………………………………………………10 4.7新闻浏览主界面………………………………………………………11 4.8新闻浏览最终界面……………………………………………………11 五.参考文献……………………………………………………………………12 1、系统总体设计 1.1 系统概述 本系统为是应用JSP和SQL2000开发的网站新闻管理系统,用户可以通过浏览器访问本系统,查看新闻,管理员可以登录本系统进行新闻的添加,删除和修改。对于本系统的管理也是通过浏览器来完成的,它具有操作方便快捷等有点。 1.2 系统功能及模块 1. 浏览新闻:用户通过浏览器查看新闻,如果是多条新闻,可以分页显示。 2. 新闻录入:通过浏览器来完成,可以改变格式。 3. 新闻修改:通过浏览器来完成。 4. 删除新闻:根据需要可以删除新闻。 5. 系统管理员验证:在对系统管理之前,必须通过登录系统验证。用户不必登陆即可查看所有新闻,管理员必须进行身份验证才能管理系统。 图1 系统功能模块

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧