『壹』 (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)