簡易圖書管理系統總結
對於一個專案,首先要考慮分層。
在簡易圖書管理系統中,將層次分為五層:
·com.company.project.control
·com.company.project.service
·com.company.project.bean
·com.company.project.conn
·com.company.project.dao
Control層:所有的Servlet都在這個層,作為一個控制器層,基本不放任何的業務邏輯。他處理自身的ServletException等異常。Servlet新特性,不需要再web.xml檔案中配置Servlet,可使用註釋@WebServlet(“”)。
Service層(model):在這一層處理異常,做演算法運算,處理業務邏輯。
Dao層:這一層將物件對映到資料庫中,將sql語句封裝,基本上所有的異常全部丟擲給呼叫者。
Bean(entity)層:放所有的實體類。在封裝屬性時,不要使用基本型別,要使用基礎型別包裝類。根據實際情況重寫toString()方法。
Conn層:存放各種資料庫連線。
Tips:
1. 對於良好的程式設計習慣,在定義成員變數時,不應該對其初始化,要在該類的構造方法中對其進行初始化,對於Servlet來說,重寫init()方法對成員變數進行初始化。
2. Get方法會重寫URL地址的引數(不管定義的URL地址中是否有引數),所以應該使用POST方法。
3. 對於資料型別異常的處理,對變數初始化後,進行try..catch()
4. 對於Conn層中的getConnention()來說,Class.forName()由於只需要執行一次,所以要在靜態程式碼塊中執行。
現在要實現對資料庫中book表的增加和檢視圖書。
思路:
首先,當訪問專案時,進入index.jsp歡迎頁面,可選擇增加圖書和檢視圖書。點選增加圖書,跳轉到addbook.html頁面,進行圖書基本資訊的填寫,而後提交至一個Servlet控制器(BookServlet.java),由Servlet控制器尋找合適的方法(這個合適的方法是根據if語句判斷,通過獲取到URL地址傳來的引數的不同,Servlet可以判斷出使用者需要的是那種業務邏輯,從而尋找相應的Service方法)來實現新增圖書的功能,這個功能就是Service層中BookService.java,他來處理一些業務邏輯。最基本的,這個Service需要一個儲存圖書的功能save(Bookbook),但是Service層只是進行業務邏輯的處理,真正的方法放在Dao層的BookDAO.java中,他將Book物件和SQL語句封裝在了一起,即將物件轉換成SQL語句,則save(Book book)方法將呼叫BookDao.insert(Bookbook)方法,真正的實現將這本書存入資料庫中。同樣,點選檢視圖書,根據URL指示的Servlet和引數,呼叫了BookService中返回一個圖書集合的方法,而這個方法同樣來自於BookDAO.java中,因而就可以得到所有的圖書資訊。
總結:使用者發起請求(VIEW),Servlet收到請求,Servlet判斷使用者需求(CONTROL),尋找合適的業務邏輯(MODEL),業務邏輯呼叫已經封裝好的Dao層的方法。