JSP页面分页怎么做?

我用的SQLSEVER2008数据库这是我的存储过程。createprocuser_xianshi@PageIndexint=1,@PageCountint=10,@Ro... 我用的SQL SEVER2008数据库
这是我的存储过程。
create proc user_xianshi
@PageIndex int =1,
@PageCount int =10,
@RowCounts int output
as
begin
set @RowCounts=0;
select @RowCounts=COUNT(*) from t_user;
with TableX
as ( select row_number()over(order by [id] ASC) as xh,* from T_User )
select * from TableX where xh between (@pageindex-1)*@pageCount+1 and @pageindex*@pageCount;
end;
这是我的表

这是我
/**
* 执行显示用户表 返回的结果集
*/
public ResultSet userXianShi(){
ResultSet rs=dbm.executeQuery("user_xianShi",0);
return rs;
}
这是我连接数据库的类
怎么在servlet和JSP中实现分页?
用我的存储过程在servlet和JSP中实现存储过程的代码 帮忙写下 , 谢谢。
展开
 我来答
精品DIY生活
推荐于2016-08-24 · 知道合伙人数码行家
精品DIY生活
知道合伙人数码行家
采纳数:46447 获赞数:131774
视频剪辑、网络管理、图片处理、办公自动化、文学、语言学。

向TA提问 私信TA
展开全部
分页须知知识点:
(1)JDBC2.0的可滚动结果集。
(2)HTTP GET请求。
一、可滚动结果集
Connection con = DriverManager.getConnection();
PreparedStatement stmt = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery();
常用方法:
(1)rs.absolute(n); 可以将指针跳到第n行。
(2)rs.relative(n); 可以将指针相对向下或向上n行。
(3)rs.first();
(4)rs.last();
(5)int curRow = rs.getRow(); 指针指向的当前行
二、功能实现分解
1.计算结果的个数
rs.last();
int size = rs.getRow();
即可得到结果的个数。

2.得到需要分几页
如果一页能够放5条记录,则
int pageCount = (size%5==0)?(size/5):(size/5+1);
即可获得需要分几页。

3.控制一页中规定显示记录个数
如果一页能显示5条记录,可以通过使用count进行计数。
int count = 0;
do{
if(count>=5) break;
.....
count++;
}while(rs.next());
通过break语句,能够使其显示到超过规定条目就跳出。

4.如何知道当前是第几页
通过HTTP get的特点,在地址栏中标明当前地址,如http://.......?curPage=1 表示现在是第一页。
String tmp = request.getParameter("curPage");
if(tmp==null){
tmp="1";
}
curPage = Integer.parseInt(tmp);
可以获得当前页。
注意:
rs.absolute(1);表示指向第一条记录;
不存在rs.absolute(0);
rs.absolute((curPage-1)*PAGESIZE+1); 把结果集指针调整到当前页应该显示的记录的开始.
比如如果一页显示5条记录,当前页是第二页,则需要把指针调整到6,当前页是第三页,则需要把指针调整为11.
5.点击首页、上一页、下一页、尾页的行为
<a href="multipage.jsp?curPage=<%curPage+1%>" >下一页</a>
<a href="multipage.jsp?curPage=<%curPage-1%>" >上一页</a>
<a href="multipage.jsp?curPage=<%pageCount%>" >尾页</a>
<a href="multipage.jsp?curPage=1" >首页</a>
6.为了保存当前页位置,则需要把当前页位置设为全局变量。
<%@ page contentType="text/html" pageEncoding="GB2312" language="java"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>hello</title>
</head>
<body>
<table border="1" spacing="2">
<%!
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String USER = "root";
public static final String PASS = "12345";
public static final String URL = "jdbc:mysql://localhost:3306/MLDN";
public static final int PAGESIZE = 5;
int pageCount;
int curPage = 1;
%>
<%
//一页放5个
String user = null;
String pass = null;
try{
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(URL,USER,PASS);
String sql = "SELECT empno,ename,job,hiredate,sal,comm FROM emp";
PreparedStatement stat = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stat.executeQuery();
rs.last();
int size = rs.getRow();
pageCount = (size%PAGESIZE==0)?(size/PAGESIZE):(size/PAGESIZE+1);
String tmp = request.getParameter("curPage");
if(tmp==null){
tmp="1";
}
curPage = Integer.parseInt(tmp);
if(curPage>=pageCount) curPage = pageCount;
boolean flag = rs.absolute((curPage-1)*PAGESIZE+1);
out.println(curPage);
int count = 0;

do{
if(count>=PAGESIZE)break;
int empno = rs.getInt(1);
String ename = rs.getString(2);
String job = rs.getString(3);
Date hiredate = rs.getDate(4);
float sal = rs.getFloat(5);
int comm = rs.getInt(6);
count++;
%>
<tr>
<td><%=empno%></td>
<td><%=ename%></td>
<td><%=job%></td>
<td><%=hiredate%></td>
<td><%=sal%></td>
<td><%=comm%></td>
</tr>
<%
}while(rs.next());
con.close();
}
catch(Exception e){

}
%>
</table>
<a href = "multipage.jsp?curPage=1" >首页</a>
<a href = "multipage.jsp?curPage=<%=curPage-1%>" >上一页</a>
<a href = "multipage.jsp?curPage=<%=curPage+1%>" >下一页</a>
<a href = "multipage.jsp?curPage=<%=pageCount%>" >尾页</a>
第<%=curPage%>页/共<%=pageCount%>页
</body>
</html>
a13680785865
2013-11-11 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:32.9万
展开全部
这个你都写的差不多了,只要把你存储过程里的pageindex这个做为参数,jsp提供当前pageindex给servlet,servlet传给后台传给存储过程
追问
servlet里怎么做你能给我写一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0adf2dfc62
2013-11-11 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:215万
展开全部
把数据取出来 排序 取一部分
推荐在数据库里分页 只取当前需要的那页的数据
追问
能给我写一下吗? JSP刚学  不太会。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mk_misty
推荐于2018-03-26 · TA获得超过176个赞
知道答主
回答量:35
采纳率:0%
帮助的人:21.8万
展开全部
分页的功能无论是Oracle,MySql,SQL Server都可以设计为2个参数:当前页码pageIndex,页容量pageRows
这样设计符合用户理解。

策略1、执行select语句
1)Servlet
接收参数:int pageIndex = 1;//默认首次查询为第一页数据
pageIndex = Integer.parseInt(request.getParamter("pageIndex "));
设置参数:int pageRows = 20;//每页显示20行
调用DAO类的方法,绑定List<Obj>到request对象,转发到jsp
2)DAO类(访问数据库的类)的方法:listByPage(pageIndex,pageRows)
select *
from (select *,row_number() over(order by uid) rowIndex from tab_userinfo)t
where t.rowIndex between (pageIndex-1)*pageRows and pageIndex*pageRows;
2)JSP
从request对象中获得绑定集合
遍历集合即可

策略2、执行procedure
SQL Server的存储过程我不会写,Oracle的会写,但这个ps应该是带2个参数的,而不是无参的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式