課程做業08 MVC框架具體使用

MVC是一種設計模式,它將應用劃分爲3個部分:數據(模型)、展示層(視圖)和用戶交互(控制器)。數據庫

在個人理解:json

view 作界面展現
controller 對界面的請求進行一次過濾和轉發
model 模型層,是對應數據庫表的設計模式

一個事件發生的執行順序是:
  1. 用戶和應用產生交互。
  2. 控制器的事件處理器被觸發。
  3. 控制器從模型中請求數據,並將其交給視圖。
  4. 視圖將數據呈現給用戶。
   不用類庫或框架就能夠實現這種MVC架構模式。關鍵是要將MVC的每部分按照職責進行劃分,將代碼清晰地分割爲若干部分,並保持良好的解耦。這樣能夠對每一個部分進行獨立開發、測試和維護。架構

現用戶登陸:權限、角色、用戶管理爲例:框架

基於MVC框架用戶登陸時用戶請求與數據處理以下圖進行:jsp

數據庫中表的結構關係:測試

處理流程:this

 

用戶登陸時,用戶訪問,傳送用戶登陸信息,而後Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協做對象數據處理(DAO)組件完成業務邏輯,即進行用戶驗證,若經過驗證,進入系統。spa

具體實現方法:hibernate

 基於MVC框架實現權限控制大概有這麼幾種思路:「用戶身份驗證」、「控制器方法權限控制」、「界面元素權限控制」這三種方式能夠爲Web開發框架自己提供了很好用戶訪問控制和權限控制,使得用戶界面呈現菜單、Web界面的按鈕和內容、Action的提交控制,均能在整體權限功能分配和控制之下。

【用戶身份驗證】

在獲取用戶登錄基本信息進行驗證時,獲取用戶的權限信息,從而達到權限控制的目的。

業務邏輯:在用戶登陸系統的時候獲取用戶的權限級別(通常用戶,操做員等),而後根據用戶級別獲取到此用戶級別能夠操做的功能項,而後根據能夠操做的功能項來動態的加載和移除功能菜單。

具體代碼實現:

(1)視圖層:即用戶登陸界面,再次省去。

(2)  控制層(配置文件)

<action name="showRole" class="roleAction" method="showRole">
<result name="showRole" type="dispatcher">/adminControl/showAllRole.jsp</result>
</action>
<action name="showRight" class="rightAction" method="showRight">
<result name="showRight" type="dispatcher">/adminControl/showAllRight.jsp</result>
</action>

(3)模型層

模型層中含有數據庫的所有數據,而且定義了相應的方法去調用,當控制層調用這些方法時,像控制層傳遞這些數據。

主要代碼:

PrintWriter out = response.getWriter();

        List<SysRight> list = rightService.findByLoginUserId(user.getUserId());//調用hibernate中的數據

        for (SysRight sysRight : list) {

            System.out.println(sysRight);

        }

        String json = JSONSerializer.toJSON(list).toString();

        out.print(json);

public List<SysRight> findByLoginUserId(String id) {

String hql="from SysUser u join u.sysRole r join r.sysRight m where u.userId = '"+id+"'";

return rightDao.findByHql(hql);

}

public List<SysRight> findByHql(String hql, Object... objects) {   

        return (List<SysRight>) this.getHibernateTemplate().find(hql,objects);

}

相關文章
相關標籤/搜索