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中实现存储过程的代码 帮忙写下 , 谢谢。 展开
这是我的存储过程。
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中实现存储过程的代码 帮忙写下 , 谢谢。 展开
4个回答
推荐于2016-08-24 · 知道合伙人数码行家
关注
展开全部
分页须知知识点:
(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>
(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>
展开全部
这个你都写的差不多了,只要把你存储过程里的pageindex这个做为参数,jsp提供当前pageindex给servlet,servlet传给后台传给存储过程
追问
servlet里怎么做你能给我写一下吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把数据取出来 排序 取一部分
推荐在数据库里分页 只取当前需要的那页的数据
推荐在数据库里分页 只取当前需要的那页的数据
追问
能给我写一下吗? JSP刚学 不太会。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分页的功能无论是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个参数的,而不是无参的。
这样设计符合用户理解。
策略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个参数的,而不是无参的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询