2014-10-05 78 views
0

我一直在學習JAVA web開發,並且對Servlet,JSP有很好的處理,並且熟悉AJAX/CSS/Javascript。在J2EE應用程序中的排序和過濾

我在很多網站上看到的一件事是能夠對網頁上的項目列表(例如店面中的項目)進行排序和過濾。例如,如果我正在查看鞋子列表,我可以過濾並僅顯示特定尺寸的可用尺寸,然後按最高價到最低價排序。

我看到,在大多數情況下使用AJAX,但我的問題是,就後端而言,我假設數據庫沒有被查詢每次做排序和過濾,所以什麼是一些技術來完成這個?

對象是否存儲在會話中,然後在進行AJAX調用時,過濾參數作爲請求的一部分發送,servlet執行過濾並返回結果?有沒有一種模式通常用於這個?

回答

1

它取決於數據集。對於小數據集,可以說,向客戶端返回單個JSON請求,並在JavaScript中進行過濾/排序。

對於大型數據集,您通常會讓服務器進行篩選和排序,這樣您只需要傳輸一小部分結果。例如,如果要從一千個產品列表中顯示10個產品,則需要進行服務器端過濾/分類以保持數據傳輸的小型化。

將結果存儲在(http)會話中似乎對我來說是個壞主意,因爲會話的大小有限。如果您關心速度,您可能需要查看專用緩存解決方案(如memcache)。

+0

我會同意在servlet上進行排序,但就數據而言,如果數據未被緩存,是否需要將原始數據集存儲在用戶會話中?這樣當過濾選項通過AJAX請求傳遞時,servlet知道哪些對象正在排序? – user1154644 2014-10-05 14:31:41

+0

如果無法重建對象的原始列表,例如通過重複數據庫查詢),那麼是的。但我很少想到實際情況下的用例,並且沒有可用的解決方法。 – 2014-10-05 16:01:12