Java菜鳥學習日記16

直接使用JSBC開發的問題
當表中的列很多時,需要寫很長的SQL語句,還需要寫大量的參數設置語句(setxxx())
讀取數據時,還需寫大量的設置屬性語句(setxxx())
易錯且不易修改,如某個字段需要去掉,就需要調整後續的很多序號
大量的時間都花在了“搬磚”上
而且很容易埋下bug,後期測試和修復時間大大增加
結論:效率低下,質量不高
因此在開發中,將容易出錯的,大量繁瑣的代碼封裝起來。給程序員提供更加高級的API(Application Programming Interface)
一套完整的,能夠解決某個方面問題的API,可以稱爲框架(framework)、庫(library)
單選列表
<c:forTokens items="字符串列表" delims="字符串中的分隔符" var="變量名" varStatus="迭代狀態數據對象名">
${ s.index}:索引(從0開始)
${ s.count}:序號(從1開始)
${ s.current}:當前值,與var相等
${ s.first}:布爾值,是否是第一項
${ s.last}:布爾值,是否是最後一項
</c:forTokens>
varStaus:這個屬性在<c:forEach>中也存在
JSTL下拉列表、單選框、複選框的選中問題:
<select>
<option value="3" ${變量==值?"selected":""}>要選中的項</option>

<option value="3" ${變量 eq 值?"selected":""}>要選中的項</option>
單選框
<input type="radio" vaalue="3" ${變量==值?"checked":""}>要選中的對象
關於Getter/Setter方法
如果屬性以is開頭,Eclipse生成getter/setter如下:
getter:isxxx
setter:setxxx
舉例:
isMale、isAdmin
isMale():setMale():isAdmin():setAdmin()
使用EL表達式時,應該寫成:
${obj.male} ${obj.admin}
數據分頁的必要性
  1. 一次性把所有的數據從數據庫中查出來,會給數據庫帶來很大的IO開銷,而IO是最慢的操作。結果是數據庫併發量大大降低。
  2. 一次性把大量的數據庫傳到應用服務器,再從應用服務器傳到用戶瀏覽器,會佔用服務器寶貴的帶寬資源,導致服務器能夠處理請求大大減少。
  3. 查詢和傳送大量數據,需要的時間必然很長,結果導致頁面反應速度變慢,用戶體驗變差
  4. 人類可讀的數據不超過幾十條,傳送成百上千條數據沒有意義
分頁數據的查詢
pageNo 頁碼(從1開始)
pageSize 每頁條數(默認10條)
pageTotal
能夠計算出來任意的pageNo對應的起始索引位置
start = (pageNo-1)*pageSize
count = pageSize
MySQL數據庫的Limit子句
limit start,count
start:起始索引位置
count:每頁的條數
Pager類的設計
pager類的職責:
根據pageNo、total、pageSize、showPageNos計算pageCount、start、end
這些數據用來支持在頁面上顯示分頁信息和頁碼:
共123條數據,第3頁/共13頁 1 2 3 4 5 6 7 8 9
區分那些數據是傳過來的,那些數據是算出來的,將傳過來的數據當作構造方法的參數。根據參數的變化頻率調整參數的爲值(Eclipse重構功能支持)
將變化頻率高的參數放在前面
同時增加構造方法重載,對變化頻率低的設置默認值
內部類
如果需要把多個類定義在一個文件中,尤其是這些類都需要publilc的時候,可以把一個類作爲主類,其他類定義在它的內部
自定義異常類
如果希望自定義異常向外部提示錯誤,則需要讓自定義異常類從Throwable繼承或從其子類繼承,常用的子類是Exception和RuntimeException
Exception:繼承它爲受查異常,必須try/catch或throws
RuntimeException:繼承它爲非受查異常,不必try/catch或throws,編程時更加自由
受用throws拋出異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章