将数据库的操作代码从servlet中剥离,封装到DAO中
工廠設計模式是所有設計模式中最簡單的設計模式!!!(就是通過工廠來創建一些對象)
工廠模式的典型應用場景:創建對象(當我們感覺到創建對象是件很痛苦的事,會用工廠模式)?
工廠模式:簡單工廠,工廠方法,抽象工廠(要支持創建多個產品,定義一個抽象工廠,抽象工廠中有多個工廠方法,可以創建多個產品)
工廠方法:
抽象工廠:利用工廠方法實現抽象工廠
?
為了避免直接在servlet中看到操作數據庫的代碼(直接在servlet中通過JDBC訪問數據庫),并且由于數據庫的不同,操作代碼也不同,譬如分頁查詢的sql語句,mysql的可以:select?*?from?t_article?where?title?like?'%"+title+"%'?limit??,?,而在oracle中是不可以用limit的。
實現方法為:創建一個接口ArticleDao
然后創建兩個實現了ArticleDao接口的類:ArticleDaoImpl(具體實現了操作MySQL數據庫的類)和ArticleDaoImplForOracle(具體實現了操作Oracle數據庫的類)。
HashMap是線程不安全的對象,而Hashtable<>是線程安全的對象。
(public?class?Hashtable<K,V>?
extends?Dictionary<K,V>?
implements?Map<K,V>,?Cloneable,?java.io.Serializable?{}
)
Properties?extends?Hashtable<Object,Object>繼承了Hashtable,它有更強大的功能,Properties?可以直接讀取文件,而且可以將文件中的鍵值對直接放到Map中來(Properties就是一個Map),調用Properties?的load方法(HashMap、Hashtable中沒有load方法),能夠?
通常DAO是無狀態的。
Servlet不僅僅可以處理來自客戶端的請求,還可以利用他的init方法來做些我們想做的初始化工作。
任何一個請求servlet發到服務器端,都會先調用servlet中的service()方法,在service方法中根據請求的Httphead里面攜帶的有關這個請求方法的信息,譬如是get或者post方法,然后把這個請求轉發給doGet()或者doPost(),實際上任何一個servlet都有一個唯一的入口,即service()方法,所以可以在到達doGet()或者doPost()方法之前,在service()方法中執行一些操作。
父類中的this是多態的,他是具體的子類對象,而不是父類對象。
Spring的主體思想就是DI(依賴注入)、IOC
總結
以上是生活随笔為你收集整理的将数据库的操作代码从servlet中剥离,封装到DAO中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用抽象工厂模式自己动手写一个ioc
- 下一篇: 利用抽象工厂创建DAO、利用依赖注入去除