jsp里怎样分页阿.? 比如我数据库里有 30 条记录.我现在想一个页面里只显示 10 条记录..应该怎样写代码呢.? 请帮忙下. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 《page.jsp》*******************************************************************文件名《page.jsp》<%@ page language="java" import="java.sql.*, my.*" %><%@ page contentType="text/html; charset=gb2312" %><jsp:useBean id="pagi" scope="page" class="my.Pagi"/><html><body><table align="center" border=1> <% String CountQuery="select count(*) from 商品资料"; String query = "select * from 商品资料"; ResultSet rs = pagi.querySql(CountQuery,query, request); String footer = pagi.PageFooter(); %><tr><td >商品编号</font></td><td >商品名称</font></td></tr><%if (pagi.intPageCount>0) { int i=0; while (rs.next()) { i++; if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize)) { %><tr><td><%=rs.getString(1)%></td><td><%=rs.getString(2)%></td></tr><%}} } out.println("<tr><td colspan=2>"+footer+"</td></tr>");rs.close(); pagi.close_all();%></table></body></html>****************************************文件名《pagi.java》*********************************************************文件名《pagi.java》package my; import java.util.*; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*;import my.DB.*;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; //当前页数 public String nowPage; // int i;public String HttpFile;//初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件DB db; //定义Linkdb类的一个对象。public Pagi()//定义构造器,初始化每页显示的主题数和数据库的连接。{intPageSize=4; //每页显示的记录数目db = new DB(); }//Countsql:总记录的Query字符串。[形式为select count(*) from tablename] //Pagisql :要分页的Query字符串。[形式为select * from tablename where ...] //request :参数传递过程中的变量。[用来控制翻页时的pages变量] public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception{HttpFile=request.getRequestURI(); //获取当前文件名。 nowPage=request.getParameter("pages"); //获取当前页,将数值赋予intPage变量。[分页栏中必须要有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(); //关闭总主题数的数据集。 db.close_all();Pagirs=db.executeQuery(Pagisql); //@@@@@@@@@@@@@@@获取执行分页的结果集。 return Pagirs; }//end querySql function. public int getCountTopic()//获取记录总数。{return intCountTopic; } public int getPageCount() //获取总页数。 {return intPageCount; }public int getIntPage() //获取当前页数。 { return intPage; } 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> "; elsestr += " 上一页 "; if(intPage<intPageCount) str += " <A href=" + HttpFile + "?pages=" + next + ">下一页</A> "; else str += " 下一页 "; if(intPageCount>1&&intPage!=intPageCount) str += " <A href=" + HttpFile + "?pages=" + intPageCount + ">尾页</A>"; elsestr += " 尾页 "; return str; } public void close_all() { db.close_all();}}************************************************文件名《DB.java》********************************************************文件名《DB.java》package my;import java.sql.*;import javax.naming.*;import javax.sql.DataSource;//一个用于查找数据源的工具类。public class DB {private Connection con=null;private Statement stmt=null;ResultSet rs=null;public ResultSet executeQuery(String sql) throws Exception{rs=null;try{ Context initCtx = new javax.naming.InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); con=ds.getConnection(); stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery (sql);}catch(SQLException e){throw e;}catch(NamingException e){throw e;}return rs;} //执行Insert,Update语句 public void executeUpdate(String sql) throws Exception{stmt = null; rs=null; try{ Context initCtx = new javax.naming.InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); con=ds.getConnection(); stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);stmt.executeQuery(sql); stmt.close(); con.close(); }catch(SQLException ex) {System.err.println("执行SQL语句出错: " + ex.getMessage()); }}// 关闭stmt和关闭连接public void close_all() { try{stmt.close();con.close();} catch(SQLException e){e.printStackTrace();} } } 哇...要那么多代码的.? 以前学过下 asp 好像也不用那么多的吧. 还是先谢谢了. 我晕,asp和jsp来都有得一比哟这个类是通用类,什么页面分页都可以用它 请教问题<%@ page language="java" import="java.sql.*, my.*" %><%@ page contentType="text/html; charset=gb2312" %><jsp:useBean id="pagi" scope="page" class="my.Pagi"/><html><body>-----我加了这段就不运行???<%String cz = request.getParameter("cz"); if(cz==null|| cz=="")cz="-";%><table align="center" border=1> <% String CountQuery="select count(*) from 商品资料"; String query = "select * from 商品资料"; ResultSet rs = pagi.querySql(CountQuery,query, request); String footer = pagi.PageFooter(); %><tr><td >商品编号</font></td><td >商品名称</font></td></tr><%if (pagi.intPageCount>0) { int i=0; while (rs.next()) { i++; if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize)) { %><tr><td><%=rs.getString(1)%></td><td><%=rs.getString(2)%></td></tr><%}} } out.println("<tr><td colspan=2>"+footer+"</td></tr>");rs.close(); pagi.close_all();%></table></body></html> // 关闭stmt和关闭连接public void close_all(){try{stmt.close();con.close();}catch(SQLException e){e.printStackTrace();}}}这里直接关掉数据源可能会出问题,加上一个判断是不是更好一些? mvc的servlet再次请求 关于AJAX被刷新问题 JSP问题 有人做iptv前端么? 合并后的List如何再放入一个Map中? 事务高手请进 ssh与数据库联系 关于文件上传和下载的问题 我是个jsp新手请大家一定要帮帮我,万分感谢!jsp问题. 在线等很急的 jsp當中有沒有像asp當中的glable.asa文件? 急!!请问如何知道登陆者的IP来自中国??? 有没有成熟的jsp免费(最好是开源的)社区(论坛)下载??
文件名《page.jsp》
<%@ page language="java" import="java.sql.*, my.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="pagi" scope="page" class="my.Pagi"/>
<html>
<body>
<table align="center" border=1>
<%
String CountQuery="select count(*) from 商品资料";
String query = "select * from 商品资料";
ResultSet rs = pagi.querySql(CountQuery,query, request);
String footer = pagi.PageFooter();
%>
<tr>
<td >商品编号</font></td>
<td >商品名称</font></td>
</tr>
<%
if (pagi.intPageCount>0)
{
int i=0;
while (rs.next())
{
i++;
if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
}
}
}
out.println("<tr><td colspan=2>"+footer+"</td></tr>");
rs.close();
pagi.close_all();
%>
</table>
</body>
</html>
****************************************文件名《pagi.java》*********************************************************文件名《pagi.java》
package my; import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import my.DB.*;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; //当前页数
public String nowPage; // int i;
public String HttpFile;//初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件
DB db; //定义Linkdb类的一个对象。public Pagi()//定义构造器,初始化每页显示的主题数和数据库的连接。
{
intPageSize=4; //每页显示的记录数目
db = new DB();
}//Countsql:总记录的Query字符串。[形式为select count(*) from tablename]
//Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]
//request :参数传递过程中的变量。[用来控制翻页时的pages变量]
public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception
{
HttpFile=request.getRequestURI(); //获取当前文件名。
nowPage=request.getParameter("pages"); //获取当前页,将数值赋予intPage变量。[分页栏中必须要有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(); //关闭总主题数的数据集。
db.close_all();
Pagirs=db.executeQuery(Pagisql); //@@@@@@@@@@@@@@@获取执行分页的结果集。
return Pagirs;
}//end querySql function.
public int getCountTopic()//获取记录总数。
{
return intCountTopic;
}
public int getPageCount() //获取总页数。
{
return intPageCount;
}
public int getIntPage() //获取当前页数。
{
return intPage;
} 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;
}
public void close_all()
{
db.close_all();
}
}************************************************文件名《DB.java》********************************************************
文件名《DB.java》
package my;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DB {
private Connection con=null;
private Statement stmt=null;
ResultSet rs=null;public ResultSet executeQuery(String sql) throws Exception
{
rs=null;
try
{
Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/bn");
con=ds.getConnection();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery (sql);
}
catch(SQLException e){throw e;}
catch(NamingException e){throw e;}return rs;
}
//执行Insert,Update语句
public void executeUpdate(String sql) throws Exception
{
stmt = null;
rs=null;
try
{
Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/bn");
con=ds.getConnection();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
stmt.close();
con.close();
}
catch(SQLException ex)
{
System.err.println("执行SQL语句出错: " + ex.getMessage());
}
}
// 关闭stmt和关闭连接
public void close_all()
{
try{
stmt.close();
con.close();
}
catch(SQLException e){e.printStackTrace();}
}
}
这个类是通用类,什么页面分页都可以用它
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="pagi" scope="page" class="my.Pagi"/>
<html>
<body>-----我加了这段就不运行???
<%
String cz = request.getParameter("cz");
if(cz==null|| cz=="")cz="-";
%>
<table align="center" border=1>
<%
String CountQuery="select count(*) from 商品资料";
String query = "select * from 商品资料";
ResultSet rs = pagi.querySql(CountQuery,query, request);
String footer = pagi.PageFooter();
%>
<tr>
<td >商品编号</font></td>
<td >商品名称</font></td>
</tr>
<%
if (pagi.intPageCount>0)
{
int i=0;
while (rs.next())
{
i++;
if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
}
}
}
out.println("<tr><td colspan=2>"+footer+"</td></tr>");
rs.close();
pagi.close_all();
%>
</table>
</body>
</html>
public void close_all()
{
try{
stmt.close();
con.close();
}
catch(SQLException e){e.printStackTrace();}
}
}这里直接关掉数据源可能会出问题,加上一个判断是不是更好一些?