java web項目求思路

在java web項目中,我有些數據要在很多頁面顯示,我不想每次顯示的都在Action中查出來,然後在頁面中再顯示,有沒有好一點的思路,讓我避免這樣做?你的意思是不想重複取?
可以在系統加載的時候就去取完數據,放在內存中
所有頁面引用這些數據就可以了
頁面引用這些數據,怎麼引用?直接從cache中取,在jsp頁面中引用cache中的數據?不明白,說清楚點,可以嗎?

在內存中就是數據庫的數據變了的時候,不能及時更新,緩存更新有沒有好一點的處理方法

static變量?當數據庫裏的數據變了的情況下怎麼辦?不可能有數據永遠都不會變吧?

你要實時反映數據庫變化,那只有每次重複查詢了
其實配置好的數據庫,數據庫自己有緩存的
重複查詢的效率並不會降低很多

很多三方的緩存使用,比如你用hibernate,可以試試EhCache

把ResultSet每一條數據封裝成一個Bean,然後創建一個List<Bean> list = new ArrayList<Bean> 存放創建的Bean,最後將list對象放在application裏面!(ResultSet數據量不能太多哦!)
記住一個原則,session裏面儘量只存放會話信息(儘管session和application都可以實現)

設置一個標識(flag),改變數據庫中數據的話就改變這個標識(flag),每次顯示數據的時候判斷一下這個flag,沒改變就繼續用內存中的數據,改變了就重新讀取並將flag重置。
至於flag具體放置在application,session還是單獨創建一個表存儲或者其他什麼方式存儲,
看你的具體需求,看看怎樣實現比較簡單了。

按照上面的步驟,當在main中執行test.exception() 
執行靜態化的部分,i被賦值爲0
然後執行exception方法,拋出異常,然後被catch住了,執行catch中 return ++i 此時i爲1,將1返回。然後再執行finally中的 System.out.println("finally " + ++i); i先被自增爲2 然後打印出來 finally 2

主要是搞清楚 try-catch-finally的執行順序(曾經有篇文章說return語句在try-catch-finally3處多有的情況下,說try-catch裏不執行的。個人認爲是錯誤,主要是傳統觀念誤導的,以爲一個方法內return語句(嵌在try-catch中)執行後下面功能就結束了(在沒有finally情況下是對的))
注意:finally 的作用是,不管方法發不發生"異常"都會被執行
我們throw new Exception();後可以在catch{...}中繼續執行,執行完catch{...}後在finally{...}中繼續執行;
那麼可以這麼理解,我們在try-catch裏return ;可以在finally{...}中繼續執行;
最後就一句話:finally語句塊是try-catch-finally最後執行的語句塊,其他按語句塊常規順序執行

說白了,估計很多人錯在 return 和 finally的順序上。
實際上,finally即不在return前執行,也不在return 後執行,而是在return 中執行。
具體說,return 語句執行時,先將返回值壓棧,然後執行finally塊,執行完畢後進行返回跳轉,再從棧裏得到的返回值,其實是finally執行前就壓入的那個返回值。基本功啊。慢慢研究一下吧。。感覺還是有意思的哈

最後一個由於i 是static的,所以它存在於stack中的,故而改變了就將永遠改變。
  特別註明:如果讀者有興趣的話講i的static去掉的話就會發生改變了,其值就是0;
  不知道這麼解釋是否解釋清楚了,如果沒有清楚的話,LZ可以找我私聊哈

哦對不起了哈,剛剛忘了說明如果去掉100行的代碼後的結果了,剛剛有人在說,這裏一併說了,希望對大家有幫助。
  如果去掉100的代碼的時候,那麼return就將會發生在catch()中,值得注意的是
  return ++i; 這個語句的含義是,return i=i+1; 當try{}拋出了異常後會有這個語句執行,
  i=1; 當fianlly 執行後就又會跳轉到catch中的return部分了。,而此時做的就是一個return語句
  而不會在加了。
來源:足球直播

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章