步驟1
做
始終通過servlet / action bean處理URL(POST表單,單擊鏈接等),而不是通過JSP處理
為什么
ActionBeans(無論某些框架調用那些類),而servlet很少是控制器 用于處理用戶輸入。 JSP是專用于將軟件表示呈現給客戶端的視圖引擎。 分開的用戶輸入處理和HTML呈現使您避免創建巨大的,多功能的,不可測試的JSP,這些JSP混合了業務和表示邏輯,并違反了MVC模式。
第2步
做
通過轉發到僅位于/ WEB-INF / {JSP文件夾}下的JSP來呈現視圖
為什么
視圖只能通過軟件設計訪問,而不能直接訪問。 將JSP放置在項目的根目錄中會帶來與客戶端不必要的訪問有關的安全性問題。此外,將所有JSP隱藏在/ WEB-INF下的做法還減少了JSP處理非控制器處理的URL的可能性,并幫助我們遵循步驟1。
步驟三
做
僅通過使用請求屬性或閃存作用域將模型從控制器傳遞到視圖
為什么
能夠訪問某些數據的所有其他視圖方式都太有限或不安全。 直接在視圖內使用請求參數可能是惡意用戶傳遞無效數據的選項。 使用會話存儲信息會導致內存消耗,并且需要一些機制來在到期后清除未使用的數據。 Cookies取決于瀏覽器,其大小有限且使用起來不太友好。 另一方面,請求屬性沒有所有這些缺點,并提出了控制器職責(更新模型)和視圖職責(讀取模型)的干凈分離。 當涉及無法使用請求屬性的“ 后發重定向”模式時,Flash作用域變得非常方便。
PS:所有基于行動的現代框架都在使用以下描述的步驟來實現其目標。 但是,如果您使用一些老式的代碼或根本不使用任何框架,您仍然可以實現良好的整潔和易于使用的MVC。
參考:在Jk 博客博客上,從我們的JCG合作伙伴 Evgeny Shepelyuk 構建Java Web應用程序時,遵循MVC的三個步驟 。
翻譯自: https://www.javacodegeeks.com/2012/07/three-steps-to-follow-mvc-while.html