本文目錄一覽:
- 1、java(oracle真分頁)
- 2、java中的噹噹網項目?
- 3、會做一些JAVA WEB項目平時可以自己接單嗎?簡單的如像噹噹網這些頁面以及相關數據的CRUD都可以實現
- 4、java噹噹網項目問題?
java(oracle真分頁)
O(∩_∩)O~
真巧,我最近也在研究分頁技術,當時我用的是STRUTS+JDBC+JSP做的網上類噹噹網,
我總結的,你看看。
下面經過我測試,肯定正確。
你自己再理理。
目前比較廣泛使用的分頁方式是將查詢結果緩存在HttpSession或有狀態bean中,翻頁的時候從緩存中取出一頁數據顯示。這種方法有兩個主要的缺點:一是用戶可能看到的是過期數據;二是如果數據量非常大時第一次查詢遍歷結果集會耗費很長時間,並且緩存的數據也會佔用大量內存,效率明顯下降。
其它常見的方法還有每次翻頁都查詢一次資料庫,從ResultSet中只取出一頁數據(使用rs.last();rs.getRow()獲得總計錄條數,使用rs.absolute()定位到本頁起始記錄)。這種方式在某些資料庫(如oracle)的JDBC實現中差不多也是需要遍歷所有記錄,實驗證明在記錄數很大時速度非常慢。
至於緩存結果集ResultSet的方法則完全是一種錯誤的做法。因為ResultSet在Statement或Connection關閉時也會被關閉,如果要使ResultSet有效勢必長時間佔用資料庫連接。
因此比較好的分頁做法應該是每次翻頁的時候只從資料庫里檢索頁面大小的塊區的數據。這樣雖然每次翻頁都需要查詢資料庫,但查詢出的記錄數很少,網路傳輸數據量不大,如果使用連接池更可以略過最耗時的建立資料庫連接過程。而在資料庫端有各種成熟的優化技術用於提高查詢速度,比在應用伺服器層做緩存有效多了。
在oracle資料庫中查詢結果的行號使用偽列ROWNUM表示(從1開始)。例如select * from employee where rownum10 返回前10條記錄。但因為rownum是在查詢之後排序之前賦值的,所以查詢employee按birthday排序的第100到120條記錄應該這麼寫:
select * from ( select my_table.*, rownum as my_rownum from ( select name, birthday from employee order by birthday ) my_table where rownum 120 ) where my_rownum=100
mySQL可以使用LIMIT子句:
select name, birthday from employee order by birthday LIMIT 99,20
DB2有rownumber()函數用於獲取當前行數。
SQL Server沒研究過,
在WEB的項目中,總免不了要分頁,在以前的項目中一般都是採用SQL語言去分頁,但SQL語言不好的一個
地方就是每種資料庫可能有一些不同,用hibernate是可以解決這個問題,但是我們的項目沒有用到任何
框架,主要的技術是jsp+javaBean+servlet,是表現層我採用的是面向對象的方法,資料庫中的每個表對
應一個javaBean,表中的每條記錄就是一個javaBean的對象,所以分頁程序我也採用面向對象,只要在前
台拿到一個表的所有記錄,用一個list存起來,然後用進list進行分頁即可.
具體的分頁程序如下:
1 import java.util.*;
2
3 /**
4 * 些類負責分頁顯示
5 * @author feng
6 */
7 public class PaginationE
8 {
9 private int pageSize;;//每頁記錄數
10 private int pageCount;//總頁數
11
12
13 public ListE getList(ListE list,int pageCur){
14 ListE pageList = new ArrayListE();
15 int count = 0;
16 count = list.size();
17 if( count pageCur*pageSize){
18 for(int i = (pageCur-1)*pageSize;i count;i++){
19 pageList.add(list.get(i));
20 }
21 }else{
22 for(int i = (pageCur-1)*pageSize;i pageCur*pageSize;i++){
23 pageList.add(list.get(i));
24 }
25 }
26 return pageList;
27 }
28
29 public int getPageCount(ListE list){
30 int sum = 0;
31 sum = list.size();
32 pageCount = sum/pageSize + 1;
33 return pageCount;
34 }
35
36 public int getPageSize(){
37 return this.pageSize;
38 }
39 public void setPageSize(int pageSize){
40 this.pageSize = pageSize;
41 }
42 }
43
在前台只要把資料庫的數據取出,將他放進List中,然後進行分頁即可,例如:
有一表user,對應有javaBean為User,先聲明一個List
ListUser list =new ListUser();
然後將user表中的所有記錄查出,然後add進list中,
下面是分頁
PaginationUser p = new PaginationUser();
p.setPageSize(10);
pageCount = p.getPageCount(list);
list = p.getList(list,1)
返回的list就是一頁的對象了,按順序取出顯示即可.
如果資料庫里有1000萬條記錄,你就把1000萬條全取出來?
1.這樣每次都取全部記錄,對資料庫的壓力非常大,性能非常差
2.全部記錄都取出來,放在List中,會造成內存溢出
java中的噹噹網項目?
到處都是校友啊!-_-
1 struts2的工作流程
2 struts2避免反覆提交機制,令牌,這個可能沒學但你可以了解一下
3 在項目你遇到了哪些困難,是怎麼解決的
4 jQuery基本上都不會問,主要問js
5 ajax工作流程
6 struts2 屬於哪個mvc中的哪個層?
7 *************
會做一些JAVA WEB項目平時可以自己接單嗎?簡單的如像噹噹網這些頁面以及相關數據的CRUD都可以實現
肯定沒問題啊。。
可以先試著接一些小單子做。
學生畢業論文單子是最小的了。。呵呵
java噹噹網項目問題?
首先把技術分類,
JQuery,js這些是頁面相關的技術,實現前段展現;
ajax重點在於非同步交互,也就是實現不跳轉頁面,與後台進行數據交互;
jdbc 是 java database connection,存在的意義就是連接資料庫;
struts 則是 使用Struts的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。可以理解為一個便於設計JavaWeb的 一個輕量級框架。
這些弄清楚了,然後對應去想想你學過的內容,面試么,揚長避短,當然對於MVC和設計模式最好能多知道一些。
最後,祝你面試成功。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182247.html