Struts是如何實現MVC的

2022-05-04 02:57:08 字數 1224 閱讀 5825

下圖為基本的mvc的流程,mvc的框架就是基於下圖來做的。只是控制器這部分mvc做的比較強大,做成了可配置的,統一處理的等等。

從mvc分類來看,struts這種mvc明顯的要處理request和response,其實做web開發的過程中都在處理,這種mvc框架,稱為面向請求驅動的mvc框架。比如,struts,webwork。

還有一種mvc框架,就是不知道request和response。把這些都封裝起來了,這種框架是基於事件驅動的mvc框架,所以叫做面向事件的mvc框架(或者叫做事件驅動的mvc框架)。比如:jsf,tapestry。

以下圖:是struts1的流程圖,struts1還是比較重要的框架。

說明:乙個基本的mvc最基本的實現的核心的原理,它要通過乙個控制器,這個控制器我們用的是servlet(其實可以用別的,像struts用的是filter,在struts1中是servlet)。這個servlet做的是什麼事情呢?擷取url並分發。具體過程為:web客戶端傳來請求,需要遵循一定的規則,是.do還是.action,只有遵循了這個規則,才能到達servlet,servlet才能統一處理得到的請求。把請求url拿到,擷取下來,根絕擷取下來的url到配置檔案中找到對應的action,呼叫action對應的excute方法。

前端控制器其實是一種設計模式,我認為前端控制器更類似於外觀模式,外觀模式定義:為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。

採用uml時序圖進一步講解struts對mvc的實現,不清,請點這裡看大圖

struts框架已經提供了actionservlet,所以它不需要我們編寫,需要我們編寫的是actionform和action。

struts框架其他元件具體說明如下:

1.actionservlet類控制導航流

2.actionservlet根據uri來決定哪個action類被用於處理請求,action可以校驗輸入,並訪問業務層以便從資料庫檢索資訊

3.action需要知道頁面提交了哪些內容,所以由actionservlet根據請求uri來決定將請求引數繫結到哪個actionform中,並傳入action

4.action在完成業務邏輯後,返回乙個actionforward物件,actionservlet根據actionforward物件中的路徑來呼叫頁面完成響應

可見,struts是基於我們最熟悉的mvc的,只不過它在一些具體的細節上做了較好的封裝,成為框架,使我們靈活方便的使用。

如何實現struts的validator框架?

手動 public class myform extends actionform struts config.xml中修改action的標籤validate true input 錯誤頁面 如果validate方法中的actionerrors不為空且size 0時 會回到input頁面。自動 pu...

mvc下是如何傳值的

最近在開發乙個專案,用的是 mvc框架,現將 mvc會用到的常用傳值方法總結如下 在講傳遞引數方法之前,先簡單介紹一下mvc 路由及執行機制。首先,web 瀏覽器向伺服器傳送一條url 請求,如http hostname controllername actionname parameters 其次...

struts中的MVC體現

struts框架struts是apache組織的乙個開放原始碼專案。struts是乙個比較好的mvc框架,提供了對開發mvc系統的底層支援,它採用的主要技術是servlet,jsp和custom tag library。model部分由action和actionform物件構成。所有的action處...