| 本文就拿一個(gè)簡(jiǎn)單的分層架構例子來(lái)做樣板。樣板程序的名稱(chēng)為“XX文章系統”,系統使用了STRUTS框架,和安全有關(guān)的層分為: “DB層”,這一層存放了鏈接數據庫的字符串,以及JdbcTemplate類(lèi),直接訪(fǎng)問(wèn)數據庫。因為在java中,執行SQL語(yǔ)句的函數按照返回值可以分為三類(lèi),所以在這一層定義了JDBC模版類(lèi)(JdbcTemplate),每一次使用操作數據庫時(shí)都要執行這一層的三個(gè)方法其中一個(gè)。 “DAO層(Data Access Object數據訪(fǎng)問(wèn)對象層)”,從安全角度上看,這一層存放了SQL語(yǔ)句(并不執行SQL語(yǔ)句,語(yǔ)句傳給DB層執行)。這一層調用“DB層”訪(fǎng)問(wèn)數據庫,它只知道“DB層”的存在,不知道數據庫的存在。 “SERVICE層”,業(yè)務(wù)邏輯層,因為一個(gè)業(yè)務(wù)的實(shí)現,并不是一次數據庫訪(fǎng)問(wèn)就可以完成的,所以這一層通過(guò)N次調用“DAO層的方法”實(shí)現業(yè)務(wù)邏輯,它只知道“DAO層”的存在,不知道“DB層”和數據庫的存在。 “ACTION層”,調用業(yè)務(wù)邏輯層,根據返回的結果,控制JSP頁(yè)面顯示。它只知道業(yè)務(wù)層的存在。這一層是入侵者的攻擊平臺。 “Form層”,把用戶(hù)POST提交的信息封裝成Form對象,經(jīng)過(guò)驗證后提交給ACTION層處理。 “JSP層”(顯示層),這一層是最終顯示給用戶(hù)看的頁(yè)面,同時(shí)也是入侵者的攻擊平臺。 用戶(hù)通過(guò)訪(fǎng)問(wèn)ACTION層,自動(dòng)會(huì )發(fā)生:“ACTION調用SERVICE,SERVICE調用DAO,DAO調用DB,DB執行SQL語(yǔ)句返回結果給 DAO,DAO返回給SERVICE,SERVICE返回給ACTION,ACTION把數據顯示到JSP里返回給用戶(hù)”。 |
聯(lián)系客服