『壹』 (jsp+javabean+oracle)这个分页代码怎么不能正确显示
逻辑很乱呀....如果数据量小的话,还是用js吧,今后扩展才容易,,如果一定要用jsp最好也是将分页代码提出,封装成java方法,要用的时候直接调用就行。
像这样都放在页面上是越扩展越难的.......
『贰』 jsp分页代码有问题
还是用javaBean比较好,显示与处理分离,明了。
给你一个,通用的,不过要把其对象放到Session中,切记啦
public class Pagination {
private int currentPage; //当前页
private int totalPages; //总页数
private int pageRows; //每页记录数
private int totalRows; //总记录数
private int pageStartRow; //每页开始记录
private int pageEndRow; //每页结束记录
private boolean hasPreviousPage; //是否有上一页
private boolean hasNextPage; //是否有下一页
private List<Object> totalList; //要分页的数据
//初始化页面信息
public void initPage(List<Object> totalList,int pageRows){
this.totalList = totalList;
this.pageRows = pageRows;
this.totalRows = totalList.size();
this.currentPage = 1;
// 计算总页数
if ((totalRows % pageRows) == 0) {
totalPages = totalRows / pageRows;
if (this.totalRows == 0)
this.totalPages = 1;
} else {
totalPages = totalRows / pageRows + 1;
}
// 默认无上一页
this.hasPreviousPage = false;
// 判断是否有下一页
if (currentPage == totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
// 默认第一页开始的记录数为1
this.pageStartRow = 1;
// 确定第一页结束的记录数
if (totalRows < pageRows) {
this.pageEndRow = totalRows;
} else {
this.pageEndRow = pageRows;
}
}
//获取当前页信息
public List<Object> getCurrentPageList(){
if(currentPage*pageRows<totalRows){
pageEndRow=currentPage*pageRows;
pageStartRow=pageEndRow-pageRows;
}else{
pageEndRow=totalRows;
pageStartRow=pageRows*(totalPages-1);
}
List<Object> pageList=new ArrayList<Object>(pageEndRow-pageStartRow+1);
if(totalRows!=0){
for(int i=pageStartRow;i<pageEndRow;i++){
pageList.add(totalList.get(i));
}
}
return pageList;
}
//获取上一页信息
public List<Object> getPreviousPageList(){
currentPage = currentPage - 1;
if (currentPage < 1){
currentPage = 1;
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
if ((currentPage - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
List<Object> pageList = this.getCurrentPageList();
return pageList;
}
//获取下一页信息
public List<Object> getNextPageList(){
currentPage = currentPage + 1;
if (currentPage > totalPages)
currentPage = totalPages;
if ((currentPage - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
List<Object> pageList = this.getCurrentPageList();
return pageList;
}
//获取指定页信息
public List<Object> getAppointPageList(int currentPage){
this.currentPage = currentPage;
if (currentPage > this.totalPages)
this.currentPage = this.totalPages;
if (currentPage < 1)
this.currentPage = 1;
if (this.currentPage > 1) {
this.hasPreviousPage = true;
} else {
this.hasPreviousPage = false;
}
if (this.currentPage < this.totalPages) {
this.hasNextPage = true;
} else {
this.hasNextPage = false;
}
List<Object> pageList = this.getCurrentPageList();
return pageList;
}
// 返回当前页
public int getCurrentPage() {
return currentPage;
}
// 返回每页记录数
public int getPageRows() {
return pageRows;
}
// 返回当前页开始记录
public int getPageStartRow() {
return pageStartRow;
}
// 返回当前页结束记录
public int getPageEndRow() {
return pageEndRow;
}
// 返回总页数
public int getTotalPages() {
return totalPages;
}
// 返回总记录数
public int getTotalRows() {
return totalRows;
}
// 返回是否有上一页
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
// 返回是否有下一页
public boolean isHasNextPage() {
return hasNextPage;
}
}
『叁』 仅仅jsp+javabean+servlet(不涉及其他框架),最佳分页怎么设计效率最佳的。
看韩顺平servlet讲解视频,不是简单能说清的
『肆』 jsp+javabean实现数据分页,连接的数据库是sql server2000
在数据库中写语句!
create database mydb
go
use mydb
go
create table news
(id varchar(50) primary key,
name varchar(50)
)
go
insert into news values('020','sss')
insert into news values('021','ttt')
insert into news values('022','uuu')
insert into news values('001','aaa')
insert into news values('002','bbb')
insert into news values('003','ccc')
insert into news values('004','aaa')
insert into news values('005','ddd')
insert into news values('006','eee')
insert into news values('007','fff')
insert into news values('008','ggg')
insert into news values('009','hhh')
insert into news values('010','iii')
insert into news values('011','jjj')
insert into news values('012','kkk')
insert into news values('013','lll')
insert into news values('014','mmm')
insert into news values('015','nnn')
insert into news values('016','ooo')
insert into news values('017','ppp')
insert into news values('018','qqq')
insert into news values('019','rrr')
go
select * from news
go
create proc proc_cursor --定义存储过程
@pagesize int, --每页有多少条数据
@pageindex int, --第几页
@pagetotal int output --总页数
as
begin
declare @total int,@start int,@end int,@id varchar(10),@name varchar(10),@i int
--定义几个变量,作用后面解释
declare mycur scroll cursor
for
select * from news order by ID
--定义一个滚动游标
open mycur
--打开游标
set @total = @@cursor_rows
--得到总的记录数
if @total> 0
begin
if @total % @pagesize = 0
set @pagetotal = @total / @pagesize
else
set @pagetotal = @total / @pagesize + 1
--得到总页数
if @pageindex < 1 set @pageindex = 1
if @pageindex > @pagetotal
set @pageindex = @pagetotal
--检查输入页数,确保它在1到总页数之间
set @start = (@pageindex-1)*@pagesize+1
--游标第一次移动到的位置,比如我们需要第11到15条记录,那么这个参数的值是11
set @end= @pageindex*@pagesize
--游标第二次移动到的位置,如上,这个值应该是15
if @end > @total
set @end = @total
--确保第二次移动不超过记录的总条数
set @i=@start
while(@i<=@end)
begin
fetch absolute @i from mycur into @id,@name
print @id+' '+@name
set @i=@i+1
end
end
else
begin
set @pagetotal = 0
select top 0 * from news
end
close mycur
--关闭游标
deallocate mycur
--释放游标
end
go
declare @pagetotal int
exec proc_cursor 5,7, @pagetotal output
--执行存储过程
print ' '
print '共'+convert(varchar(10),@pagetotal)+'页'
go
drop proc proc_cursor
--删除存储过程
use master
go
drop database mydb
--删除数据库
go
然后你在直接调用就OK啦么!
『伍』 JSP+Servlet+JavaBean写“博奥教育网址之家“前台和后台,后台卡在分页了,还要求前台显示排序
不知道你的数据库用的什么 每种数据库的分页不一样的 mysql 用的是limit sqlsever是 top oracle是rownumber
给你一个通用的分页代码 但是数据量小的时候可以 大的时候就很慢了
pagesize //每页显示的数据大小
rowcount//行记录
iPage//页数
pagecount//总页数
recordcount //总的记录数
sqlRst.last();
recordcount = sqlRst.getRow();
sqlRst.beforefirst();
//这段代码是取得总的记录数 然后进行分页计算
if ((request.getParameter("pagesize") != null) && (request.getParameter("pagesize") != "")){
pagesize = Integer.parseInt(request.getParameter("pagesize"));
}
else{
pagesize = 500;
}
rowcount = pagesize;
if ((request.getParameter("iPage") == "") || (request.getParameter("iPage") == null)){
iPage = 1;
}
else{
iPage = Integer.parseInt(request.getParameter("iPage"));
}
if(recordcount % pagesize == 0){
pagecount = recordcount / pagesize;
}
else{
pagecount = (recordcount / pagesize + 1);
}
if (iPage < 1){
iPage = 1;
}
if (iPage > pagecount){
iPage = pagecount;
}
//页码参数
if (((iPage - 1) * pagesize > 0) && ((iPage - 1) * pagesize < recordcount)){
sqlRst.absolute((iPage - 1) * pagesize);
}
else if((iPage - 1) * pagesize <= 0){
sqlRst.beforeFirst();
}
else if((iPage - 1) * pagesize >= recordcount){
sqlRst.absolute(recordcount);
}
//这里是最笨的去数据的分页方法 因为你没有说你的数据库是什么
然后下面用while循环去数据显示就可以了
『陆』 java ee如何用javabean实现页面分页
你可以使用servlet直接实现分页,还用不到javabean呢,当然如果你想使用MVC格式的javabean也是可以的,分页的关键不在于javabean而在于Model对数据库信息的处理,然后将必要的参数反馈给JSP页面,jsp通过接受控制器发过来的数据然后处理显示,就出现你说的分页的效果了
分页的SQL代码数据库部分显示:select top pageSize *from table where 属性 not in (select top pageSize*(PageCount-1) 属性 from table)