从数据库中检索出来的结果如何分页显示,用到哪些技术,看了一些例程,写的不是很明白,请赐教!
解决方案 »
- IE6点击超链接,整体页面会上浮
- 本人想用JAVA编写个类似QQ的即时通讯软件,应该学些什么呢?望各位前辈能指点一下,晚辈在这里先拜谢了~~
- 每周自动获取“单选题"作答如何设计啊?
- 关于动态生成的设计思路
- 用JSP开发一个中小型应用系统需要学习哪些知识?
- 求MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller.exe
- jsp 输出图片的问题!谢谢!
- 大家谈一谈基于web的网络管理系统,言者有分
- 关于平常不注意的try catch的问题
- hibernate 多对多 中间表主键问题?
- apache.commons-fileupload的 问题 怎么解决阿,帮我看看错误信息
- jsp写入数据库乱码问题!!!!
<%@ page contentType="text/html;charset=gb2312" %><%@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" %><% //建立一个JNDI查找对象 InitialContext JNDI_Context = new InitialContext(); //JNDI查找数据源 DataSource ds = (DataSource) JNDI_Context.lookup("jdbc/mysqlDbPage"); //得到一个数据源连接Connection conn = ds.getConnection(); int intPageSize; //一页显示的记录数 int intRowCount; //记录总数 int intPageCount; //总页数 int intPage; //待显示页码 java.lang.String strPage; int i;//设置一页显示的记录数intPageSize = 2;//取得待显示页码 strPage = request.getParameter("page"); if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; } else{//将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage<1) intPage = 1;} // 得到结果stmt = conn.createStatement(); ResultSet sqlRst = stmt.executeQuery("select f1 from test"); //获取记录总数 sqlRst.last(); intRowCount = sqlRst.getRow(); //记算总页数 intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount;%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql</title> </head> <body> <table border="1" cellspacing="0" cellpadding="0"><tr> <th>姓名</th> </tr><% if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0;while(i<intPageSize && !sqlRst.isAfterLast()){ %> <tr> <td><%=sqlRst.getString(1)%></td> </tr><% sqlRst.next(); i++; } } %> </table>第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%><%if(intPage>1){%><a href="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%> </body> </html><% //关闭结果集 sqlRst.close();
在SQL语句里如何控制取出来的记录数,比如一共有100条,我条取出前十条,第二次再读后10条。
象前面说的,如果数据量大的话,一次用SQL语句取出来不是很不合理嘛,浪费资源,而且速度慢。
我是菜鸟,请各位明示!
<%
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i,j,k; //设置一页显示的记录数
intPageSize = 3; //取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
} else{
//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1; }
//装载JDBC-ODBC驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//设置数据库连接字符串
strCon = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"dike8523$","dike8523$");
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
//获取记录总数
strSQL = "select count(*) from ly1";
sqlRst = sqlStmt.executeQuery(strSQL);
//执行SQL语句并取得结果集
sqlRst.next(); //记录集刚打开的时候,指针位于第一条记录之前
intRowCount = sqlRst.getInt(1);
sqlRst.close(); //关闭结果集
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount;
//设置获取数据SQL语句
strSQL = "select lname,lemail,content from ly1 ORDER BY id DESC";
//执行SQL语句并取得结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//将记录指针定位到待显示页的第一条记录上
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++) sqlRst.next(); %>
<html>
<head>
<title>分页显示</title>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" width=500 align=center>
<%
//显示数据
i = 0;
while(i<intPageSize && sqlRst.next()){ %>
<tr bgcolor=#336699>
<td colspan=2 >~~~留言~~~</td>
</tr>
<tr>
<td>用户名:<%=sqlRst.getString("lname")%></td>
</tr>
<tr>
<td>邮件:<%=sqlRst.getString("lemail")%></td>
</tr>
<tr>
<td>内容:<%=sqlRst.getString("content")%></td>
</tr>
<tr><td><hr width=500 boder=1></td></tr>
<% i++; } %>
<tr>
<td colspan=2 align=center>
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%>
<a href="ly3.jsp?page=<%=intPage+1%>">下一页</a><%
}
%>
<%if(intPage>1){%>
<a href="ly3.jsp?page=<%=intPage-1%>">上一页</a><%
}
%>
</td>
</tr>
</table>
<hr width=500 boder=1>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
JDevelpoer+SQL server2000
我看到一篇文章,各位讨论一下,看大家谁用过,该如何用,文中提到的调用方法我不是很明白。
转贴如下:
在以列表的形式显示数据时需要对页面进行翻页控制,基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植,利用组件的形式对翻页逻辑进行封装。
翻页控制器的分析 描述: 翻页控制器用来实现对WEB页面的翻页内容的显示和翻页的各种操作的控制。通过JSP调用,将分页内容显示到WEB页面。它支持多种方式和风格的显示。 翻页控制器的设计 下面分别创建翻页控制器的一个PageConfig类、一个Page类、一个PageView类。 · PageConfig.java 类
类 PageConfig
声明 public class
描述 这个类用来保存页面属性的值,如每页显示几行等。
超类
执行
属性描述
属性 属性描述 定义
[PageConfig]
|--PAGE_SIZE 页大小 public static final int
|--PAGE_SIZE_SMALL 小型页面的大小 public static final int
|--PAGE_SIZE_NORMAL 正常页面的大小 public static final int
|--PAGE_SIZE_BIG 大型页面的大小 public static final int
|--PAGE_SIZE_BIGGER 较大页面的大小 public static final int
|--PAGE_SIZE_BIGGEST 最大页面的大小 public static final int
· Page.java 类
类 Page
声明 public class
描述 这个类用来保存页面属性的值,如每页显示几行等。
超类
执行 java.lang.Serializable
属性描述
属性 名称 属性描述 数据类型
|--EMPTY_PAGE 空白页面 描述一个空白页面,即不含内容的页面。 Page对象
|--objects 结果集列表 结果集列表 java.util.List或java.util.Vector
|--start 开始记录号 开始记录号,从0开始 正整数和0
|--end 结束记录号 结束记录号 正整数和0
|--viewStart 显示在页面开始记录号 显示在页面开始记录号,从1开始 正整数
|--viewEnd 显示在页面结束记录号 显示在页面结束记录号 正整数
|--hasPrevious 是否有上一页的开关 是否有上一页的开关 布尔值
|--previousPageNumber 上一页的页码 上一页的页码 正整数和0
|--hasNext 是否有下一页的开关 是否有下一页的开关 布尔值
|--nextPageNumber 下一页的页码 下一页的页码 正整数和0
|--total 总行数 一共有多少行记录 正整数和0
|--totalPage 总页数 一共有多少页
|--currentPageNumber 当前页 描述当前是第几页 正整数和0
|--pageSize 页大小 描述每页有多少行 正整数和0
构造器
构造器 构造器描述 参数
[Page]
|--Page(List l, int s, boolean hasNext) 创建页面 l 结果集s 开始记录号,从0开始hasNext 是否有下一页的开关
|--Page(List l, int s, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号,从0开始hasNext 是否有下一页的开关total 一共有多少行记录
|--Page(List l, int s, int size, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号,从0开始size 每页有多少行hasNext 是否有下一页的开关total 一共有多少行记录
|-- Page(List l, int num, int size, int total) 创建页面 l 结果集num 当前是第几页size 每页有多少行total 一共有多少行记录
|-- Page(List l) 创建页面,不进行分页 l 结果集
方法
方法 方法描述 返回值
[Page]
|--autoCalculate () 自动计算,根据当前页、页大小、总行数计算出其它属性的值 private void
|--getList() 获得结果集 public List
|--getViewStart() 获得显示在页面的开始记录号,从1开始 public int
|--getViewEnd() 获得显示在页面的结束记录号 public int
|--hasNextPage() 是否有下一页 public boolean
|--hasPreviousPage () 是否有上一页 public boolean
|--getPreviousPageNumber () 获得上一页的页码 public int
|--getNextPageNumber () 获得下一页的页码 public int
|--getTotal () 获得结果集中记录总行数 public int
|--getTotalPage () 获得总页数 public int
|--getCurrentPageNumber () 获得当前页码 public int
|--getPageSize () 获得每页多少行记录 public int
|--getStartOfNextPage () 获得下一页在结果集中开始的记录号,从0开始 public int
|--getStartOfPreviousPage () 获得上一页在结果集中开始的记录号,从0开始 public int
|--getSize() 获得当前页包括的记录行数 public int
|--isEmpty() 判断当前页面是否是空白页面,如果当前页面是空白页面,返回true,否则,返回false public boolean
PageView.java 类
类 PageView
声明 public class
描述 通过JSP调用,将分页内容显示到WEB页面。不支持图片、按钮等,只支持文字。用法:在JSP页面按如下形式定义:<% PageView view = new PageView(request,out,page); %>按缺省形式显示<% view.setVisible(true); %>按指定形式显示<% view.setVisible(true,0,1); %>
超类
执行
属性描述
属性 名称 属性描述 数据类型
[PageView]
|--currentUrl 当前页面的URL 当前页面的URL 字符串
|--style 风格 风格 字符串
|--useSquareBrackets 是否加[]的开关 在"上一页"两边是否加上"["和"]" 布尔值
|--page WEB页面 WEB页面 Page对象
构造器
构造器 构造器描述 参数
[PageView]
|-- PageView (HttpServletRequest request,JspWriter out,Page page)) 创建一个分页内容 request 客户端请求out 页面输出对象page WEB页面
方法
方法 方法描述 返回值
[PageView]
|--setVisible(boolean visible) 按缺省形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void
|--setVisible(boolean visible,int style,int order) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void
|--setVisible(boolean visible,boolean useSquareBrackets,int style,int order) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void
|--viewPage(boolean useSquareBrackets,int style,int order) 按指定形式显示分页内容,order为0,表示完整形式,按如下顺序显示:共计:18 分页:2 当前页:1 每页:10 首页 前页 后页 尾页 转到□□□□order为1,表示简洁形式,按如下顺序显示:前页 后页 尾页 1/2order为2,表示完整形式2,按如下顺序显示:共计:18 每页:10 转到□□□□ 首页 前页 后页 尾页 1/2 public void
翻页控制器的编码 只需按翻页控制器的设计进行编码,这里不用再讲了。 翻页控制器组件的源代码 a)PageConfig.java b)Page.java c)PageView.java 源代码:立即下载 翻页控制器的调用 翻页控制器的调用实在太简单了,调用方法: · 导入翻页控制器包 <%@ page import="java.util.List,com.cwap.oa.controller.web.page.Page,
com.cwap.oa.controller.web.page.PageView"%>· 创建一个Page对象,Page.EMPTY_PAGE为空白页面 Page page = Page.EMPTY_PAGE;· 创建一个PageView对象 <% PageView view = new PageView(request,out,page); %>· 显示分页的内容: 按缺省形式显示 <% view.setVisible(true); %>按指定形式显示 <% view.setVisible(true,0,1); %>· 调用翻页控制器的例子 下面是在论坛板块中的一个JSP中调用的示例,用来显示所有的论坛板块列表,下面只列出部分代码: <%@ page language="java"%>
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.util.List,
com.cwap.oa.controller.web.page.PageView,com.cwap.oa.controller.web.page.Page"%>
<jsp:useBean id="forumBoardHelper" scope="page"
class="com.club8090.forum.forumboard.client.ForumBoardClientHelper"/>
<%
String tmp=request.getParameter("pageNumber");
int pageNumber = 0;
if(tmp==null || tmp.equals("")){
pageNumber = 1;
}else{
try {
pageNumber = Integer.parseInt(tmp);
}catch(java.lang.NullPointerException npe){
pageNumber = 1;
}catch(java.lang.NumberFormatException nfe){
pageNumber = 1;
}
}
Page page = Page.EMPTY_PAGE;//page初始化为Page.EMPTY_PAGE空白页面
page = forumBoardHelper.getAllForumBoards(pageNumber);
%>
…
<table>
<tr>
<td>NO.</td>
<td>名称</td>
<td>描述摘要</td>
</tr>
<%
List items = page.getList();
if( items.isEmpty() ) {
out.println("<tr colspan=3>没有记录存在</tr>");
}else{
int no;//页面中显示的行数
for (int i = 0; i < items.size(); i++) {
ForumBoardModel forumBoardModel = (ForumBoardModel)items.get(i);
no = page.getViewStart() + i;
%>
//显示记录列表
<tr>
<td><%= no %></td>
<td><%= forumBoardModel.getName() %></td>
<td><%= forumBoardModel.getSummary() %></td>
</tr>
<%
}
PageView view = new PageView(request,out,page);
view.setVisible(true,0,1);
}
%>
</table>
…
我有上面提到的源码,你们可以看看,如何改进,而又容易使用!
如何给你们,你们想个办法,一个一个的发邮件是不是有点慢了?
http://www.csdn.net/develop/Read_Article.asp?Id=20368
http://www.csdn.net/develop/Read_Article.asp?Id=18730
http://www.csdn.net/develop/Read_Article.asp?Id=16268随便贴的自己研究把!
import java.util.*;
import sun.jdbc.rowset.CachedRowSet;/**
*
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class PageBean {
private String tableName; //需要分页的数据库视图名称
private int totalPage;
private int curPage = 1;
private int nextPage;
private int perPage = 20; //默认为每页显示20条
private int previousPage;
private String index;
private int firstPage;
private int lastPage; //视图的索引字段
public int getTotalPage() {
return totalPage;
} public PageBean() {
} public void setCurPage(int curPage) {
this.curPage = curPage;
} public int getCurPage() {
return curPage;
} public int getNextPage() {
if (getCurPage() == this.totalPage) {
return this.totalPage; //到了最后面
}
else {
return this.getCurPage() + 1;
}
} public void setPerPage(int perPage) {
this.perPage = perPage;
} public int getPerPage() {
return perPage;
} public int getPreviousPage() {
if (this.getCurPage() == 1) {
return 1; //到了最前面
}
else {
return this.getCurPage() - 1;
}
} public String getTableName() {
return tableName;
} public void inital() {
int i = 0;
try {
DB mydb = new DB();
String sql = "select count(*) from " + tableName;
CachedRowSet rs = mydb.executeQuery(sql);
System.out.println(sql);
rs.next();
if (rs.getInt(1) % this.getPerPage()==0){
i=rs.getInt(1)/this.getPerPage();
}
else{
i=rs.getInt(1)/this.getPerPage()+1;
}
this.totalPage = i;
this.firstPage=1;
this.lastPage=i;
}
catch (Exception e) {
System.out.println(e.getMessage());
} } public CachedRowSet getRecord() {
CachedRowSet rs = null;
DB mydb = new DB();
try {
int i = curPage - 1;
String sql = "select * from " + tableName + " where rownum<=" +
this.perPage + " and " + this.index + " not in (select " + this.index +
" from " + tableName +
" where rownum<=" + perPage + "*" + i + ")";
System.out.println(sql);
rs = mydb.executeQuery(sql);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
return rs;
} public static void main(String[] args) {
PageBean mypage = new PageBean(); mypage.setIndex("directionId");
mypage.setPerPage(2);
mypage.setCurPage(1);
mypage.setTableName("v_direction");
mypage.inital();
System.out.println("taltal page:" + mypage.getTotalPage());
System.out.println("nextpage:" + mypage.getNextPage());
System.out.println("prepage:" + mypage.getPreviousPage());
CachedRowSet rs = mypage.getRecord();
try {
while (rs.next()) {
System.out.println(rs.getString(1));
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
} public String getIndex() {
return index;
} public void setIndex(String index) {
this.index = index;
} public void setTableName(String tableName) {
this.tableName = tableName;
}
public int getFirstPage() {
return firstPage;
}
public void setFirstPage(int firstPage) {
this.firstPage = firstPage;
}
public int getLastPage() {
return lastPage;
}
public void setLastPage(int lastPage) {
this.lastPage = lastPage;
}}
<!--
分页bean的使用方法:
首先设置:要分页的视图名称,设置当前页码,每页显示的数量,视图的索引字段
然后调用其方法:inital()初始话,就可以了,如果不设置每页显示的数量,那么默认为每页显示20条
-->
<jsp:useBean id="mypage" class="util.db.PageBean"/>
<jsp:setProperty name="mypage" property="tableName" value="courseTeacher"/>
<jsp:setProperty name="mypage" property="curPage"/>
<jsp:setProperty name="mypage" property="perPage" value="10"/>
<jsp:setProperty name="mypage" property="index" value="teacherId"/>
<%
mypage.inital();
CachedRowSet rs=mypage.getRecord();
while(rs.next()){
%>
<tr class="back_color_2">
<td class=mode1> <div align="center"> <%=rs.getString("teacherId")%></div></td>
<td class=mode2> <div align="center"><%=rs.getString("teacherName")%></a></div></td>
<td class=mode2> <div align="center"><%=rs.getString("schoolName")%></div></td>
<td class=mode2><div align="center">
<input name="button" type="button" class="cl2_ipt" value="查看" onClick="go('edit.jsp?teacherId=<%=rs.getString("teacherId")%>')">
</div></td>
</tr>
<%}%>
</table>
<table width="630" border="0" cellspacing="0" cellpadding="0">
<tr class="back_color_2">
<td width="104" class="mode2">第
<jsp:getProperty name="mypage" property="curPage"/>
页</td>
<td width="119" class="mode2"> <a href="teacher_index.jsp?curPage=<jsp:getProperty name="mypage" property="firstPage"/>">
<img src="../../images/cx_fy_sy.gif" width="13" height="13" border="0"></a><img src="../../images/blank.gif" width="8" height="8">
<a href="teacher_index.jsp?curPage=<jsp:getProperty name="mypage" property="previousPage"/>">
<img src="../../images/cx_fy_syy.gif" width="13" height="13" border="0"></a>
<img src="../../images/blank.gif"> <a href="teacher_index.jsp?curPage=<jsp:getProperty name="mypage" property="nextPage"/>"><img src="../../images/cx_fy_xyy.gif" border="0"></a>
<img src="../../images/blank.gif"> <a href="teacher_index.jsp?curPage=<jsp:getProperty name="mypage" property="lastPage"/>"><img src="../../images/cx_fy_wy.gif" width="13" height="13" border="0"></a>
</td>
<td width="136" class="mode2">
<%
for(int i=mypage.getCurPage();i<=mypage.getTotalPage() && i<mypage.getCurPage()+5;i++){
out.print(" <a href=teacher_index.jsp?curPage="+i+">["+i+"]</a> ");
}
%>
</td>
<td width="78" class="mode2"></td>
<td width="193" class="mode2">总共:
<jsp:getProperty name="mypage" property="totalPage"/></td>
</tr>
</table>
Note: sun.tools.javac.Main has been deprecated.
/loupan/4.jsp:71: Method last() not found in class java.lang.String.
sqlRst.last();
^
/loupan/4.jsp:73: Method getRow() not found in class java.lang.String.
intRowCount = sqlRst.getRow();
^
/loupan/4.jsp:129: Method absolute(int) not found in class java.lang.String.
sqlRst.absolute((intPage-1) * intPageSize + 1);
^
/loupan/4.jsp:135: Method isAfterLast() not found in class java.lang.String.
while(i<intPageSize && !sqlRst.isAfterLast()){
^
/loupan/4.jsp:149: Method getString(int) not found in class java.lang.String.
out.print((sqlRst.getString(2)));
^
/loupan/4.jsp:151: Method getString(int) not found in class java.lang.String.
out.print((sqlRst.getString(3)));
^
/loupan/4.jsp:153: Method getString(int) not found in class java.lang.String.
out.print((sqlRst.getString(4)));
^
/loupan/4.jsp:155: Method getString(int) not found in class java.lang.String.
out.print((sqlRst.getString(5)));
^
/loupan/4.jsp:158: Method next() not found in class java.lang.String.
sqlRst.next();
^
/loupan/4.jsp:184: Method close() not found in class java.lang.String.
sqlRst.close();
^
10 errors, 1 warning--------------------------------------------------------------------------------
Resin 2.1.4 (built Fri Aug 2 14:16:52 PDT 2002)
毛遂自荐一个,欢迎批评指教。
http://www.xdevelop.net/gb/main.jsp?catalogID=31经常有人问,数据库查询往哪里输入,我的分页只处理分页,不负责数据库,因为数据库查询因应用而异,我的标记只做分页份内的事,告诉你该从第几记录开始查了,该查多少条记录等,至于怎么查出来,这是你们自己实现的事了。分页最麻烦的是翻页时大量参数的传递,以及查询条件的传递,这个标记已经全部处理好了,不用你操心,只需按步就班的写三个标记即可。一个组件通常只解决一个问题,这是我设计组件的一个原则。
public ResultSet execQueryPage(String table,String field,String condition,int p)
{
String sql0=null;
try{
conn=DriverManager.getConnection(url,uid,pwd);
Statement stmt=conn.createStatement();
//start=(p-1)*pagesize;
//sql0=sql+" limit "+start+", "+pagesize;
sql0="select top "+pagesize+" "+field+" from "+table+" where "+condition+" and id not in (select top "+((p-1)*pagesize)+" id from "+table+" where "+condition+" order by id desc) order by id desc";
rs=stmt.executeQuery(sql0);
} catch(SQLException ex)
{
System.err.println("mysqlbean.execQueryPage:"+ex.getMessage());
System.err.println(sql0);
}
return rs;}
很不错的分页代码,肯定比上边的“目前最好的分页技术”强!
TEST.java
TESTAction.java
TESTDAO.java
TESTForm.java
TEST.jsp
TESTOut.jsp代码见:
http://expert.csdn.net/Expert/topic/2228/2228055.xml?temp=.1732599