在獲取完所有的list後只需要截取你所需要的一部分list就可以了,所以要知道你所需要的是從哪裡開始,到哪裡結束。
有很多種方法,如果只是JSP里的話可以再次遍歷獲取的所有list集合,然後把滿足條件的截取出來,開始的list下標應該是:(你要查詢的頁數-1)*頁面要顯示的數據條數,也就是你這里的(page-1)*pageRows,結束的地方也就是page*pageRows-1了。//這樣應該可以寫出來了吧
建議把這個方法封裝到一個類裡面,一個方法就實現一種功能。
當然這是比較麻煩的,現在流行框架,以後會學到的,在hibernate框架里用query語句很容易就實現了,現在時間多,
多看看hibernate框架吧,推薦你一本書,hibernate
in
action,有中文版的。這個是你們以後入門了hibernate後看的。
public
List
listOrderByItem(int
pageRows,int
page)
{
//page是要顯示的頁數,pageRows是你要顯示的行數
Session
session
=
this.getSession();//獲取hibernate的session,hibernate自動生成的DAO里包含
String
hql
=
"from
TBL_storage
as
tbl_s
order
by
item";//hql語句
Query
query
=
session.createQuery(hql);//hibernate的query,通過session創建
query.setFirstResult((page-1)*pageRows);//設置開始的下標
query.setMaxResults(pageRows);//設置每頁顯示的行數
return
query.list();//得到所需要的結果集
}
⑵ JSP分頁顯示資料庫中的表格內容
處理方式:
一:首先抄sql語句,襲使用not in的方式處理,
在類里寫一個方法
public List<> getAllByPage(int pageSize,pageNum){
......
String sql="select top"+pageSize +" * from 表名x where 欄位A not in (select top "+pageSize*(pageNum-1)+" 欄位A from 表名x)";
.......
rerun list;
}
其中,pageSize是頁面要顯示的條數,pageNum是要顯示的頁碼,sql語句是固定的,返回一個list對象。
二:在Biz里寫一個方法,調用Dao里的getAllByPage方法,傳入兩個參數,返回list結果集。
三:在jsp頁面以url傳參的方式進行頁面處理和數據的顯示。
使用request對象獲取傳入的值,進行強制類型轉作為參數,傳入到Biz業務類的方法中處理,返回list結果集,使用表達式的方式在頁面中進行顯示。
⑶ jsp中如何分頁顯示查詢到的數據
jsp中分頁顯示查詢到的數據是通過foreach標簽控制的,一般是顯示首頁,下一頁,上一頁,尾頁這些連接項。
1、構建一個PageControl對象將分頁所涉及到的一些關鍵的"控制數據"予以封裝.
⑷ 關於servlet與jsp之間實現資料庫結果分頁顯示,幫忙調試
你們這樣分頁肯定有問題,如果數據量小還可以,數據量稍微大一點你的程序就完專了,屬你是把表裡的數據全都查出來了吧?內存是有限的,像你這樣,會把伺服器搞垮,好的分頁方法是看第幾頁就去資料庫里查第幾頁,應該在sql語句上下一點功夫。給你寫個sql的公式:
select top 每頁顯示數量 * from 表 where 條件 and 主鍵 not in ( select top (當前頁-1)*每頁顯示數量 主鍵 from 表 where 條件 order by 主鍵 desc) order by 主鍵 desc
要注意的是這個適用於access和sqlserver,外面的select和裡面的select的條件、排序應該保持一致。像這樣的話,jsp頁面就好寫多了。
還有在servlet里最好把rs的內容都存到一個集合裡面,然後在jsp里循環集合就可以了,這樣在jsp之前就可以關閉rs,和關閉連接,要不然占的資源不可想像。
⑸ 看看JSP中怎樣實現分頁顯示
<%! int pageSize=4;
int pageCount;
int showPage;
%>
<!-- 連接資料庫並從資料庫中調取記錄-->
<%
Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
}
try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/message board","root","123456");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滾動的結果集
rs=sql.executeQuery("select * from messageinfo");
//將游標移到最後一行
rs.last();
//獲取最後一行的行號
int recordCount=rs.getRow();
//計算分頁後的總數
pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
//獲取用戶想要顯示的頁數:
String integer=request.getParameter("showPage");
if(integer==null){
integer="1";
}
try{showPage=Integer.parseInt(integer);
}catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
//如果要顯示第showPage頁,那麼游標應該移動到的position的值是:
int position=(showPage-1)*pageSize+1;
//設置游標的位置
rs.absolute(position);
//用for循環顯示本頁中應顯示的的記錄
for(int i=1;i<=pageSize;i++){
%>
<table>
<tr>
<th><%=rs.getString("UserName") %></th>
<td>發表於:<%=rs.getString("datetime") %></td>
</tr>
<tr >
<th colspan="3"><textarea><%=rs.getString("content") %></textarea></th>
</tr>
</table>
<%
rs.next();
}
rs.close();
con.close();
}
catch(Exception e){
e.printStackTrace();}
%>
<br>
第<%=showPage %>頁(共<%=pageCount %>頁)
<br>
<a href="ShowMessages.jsp?showPage=1">首頁</a>
<a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上一頁</a>
<% //根據pageCount的值顯示每一頁的數字並附加上相應的超鏈接
for(int i=1;i<=pageCount;i++){
%>
<a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a>
<% }
%>
<a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下一頁</a>
<a href="ShowMessages.jsp?showPage=<%=pageCount%>">末頁</a>
<!-- 通過表單提交用戶想要顯示的頁數 -->
<form action="" method="get">
跳轉到第<input type="text" name="showPage" size="4">頁
<input type="submit" name="submit" value="跳轉">
</form>
⑹ 在JSP頁面中實現分頁顯示和翻頁功能,需要來回傳遞哪幾個參數
頁面分頁通常有兩種展現形式:
查詢出全部結果數據,以集合等形式保存在內存中,每次在內存中讀取一頁的數據顯示。該方法首次載入數據量較大,耗時會很久,而且可能展現出的數據可能包含被修改或刪除過的過期或垃圾數據,存儲數據也會消耗大量的內存,但首次載入後,分頁展現會非常迅速,效果較好。
每次切頁時從資料庫中檢索當前頁所需展現數據,每次查詢數較少,總體開銷也就減少了,再進行SQL優化,也能達到較高的效率,而且實時檢索不易出現數據錯誤的問題。
使用分頁功能,最關鍵的參數如下:
請求參數:
1)當前需要展示的頁碼,變數,默認從第一頁開始,可能是頁面上的上下頁,通過當前頁碼±1來計算出來,也可能是頁面有頁碼頁表用戶通過點擊相應數字或是輸入框用戶手輸入的頁碼;
2)每頁顯示的數量,通常是變數,可以從頁碼提供相應的下拉框供用戶選擇。若是定義為常量,那就不需要每次傳遞了;
3)總數量,根據篩選條件決定,若是篩選條件固定,則只需將此定義為常量,不必作為參數傳輸,否則則需要根據篩選條件每次查詢資料庫獲取計數。
返回參數:
返回需要展示的列表及以上請求參數,通常列表通過Ajax計數實現,那也就不需要返回請求參數了。所展示的列表通常會使用集合類型進行封裝或是數據讀取成json格式由前台進行解析。