<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Edzy_Java

      BlogJava :: 首頁 ::  ::  ::  :: 管理 ::
      58 隨筆 :: 12 文章 :: 11 評論 :: 0 Trackbacks

    1.總體設計

    ????? MVC框架如Struts、Webwork,都在Servlet的基礎上創建了一個自己的絕對空間,在自己的空間里定義MVC世界和規則。無論這個世界定義得是否漂亮,程序員都有一個學習世界的過程。

    ????? 而Spring MVC則完全保留著Servlet概念中的request,response和session,并沒有強制建立一個自己的概念模型(當然,他也有很爛的SimpleFormController,但你完全可以把它踢在一旁不管),也不強制需要FormBean和一堆XML定義。

    ????? 同時,它透明完成了與Spring的集成,Multi-action的派發,提供了綁定request數據用的binder等基本API。

    ????? 所以,如果想簡單,使用Spring MVC的原始形態是一個很好的,類似于RoR中ActionPack的方案。

    ????? 推薦使用一個Controller響應一組相關動作的MultiActionController。同時,雖然一點不喜歡FormController定義的概念模型,但還是不影響發揮拿來主義,在共性比較明顯后臺管理模塊,定義MultiActionFormController,自動完成某些共同的Form流程。


    2.寫給在用其他MVC框架程序員的快速入門

    ????? 也許,所有程序員都先放下自己框架里的概念模型,還原回一個JSP/Servlet程序員的角度,思考一個JSP/Servlet框架需要的功能。

    ???? 0. 配置文件

    ???????? Spring的配置文件默認為WEB-INF/xxxx-servelet.xml。

    ???????? 其中xxx為web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。

    ???? 1. 與Spring集成及IOC

    ????????? 天然兮,由DispatcherServlet完成。

    ????? 2. Action及Multi-Action 分發
    ????????? Spring將按照配置文件定義的URL,Mapping到具體Controller類,再根據URL里的action= xxx或其他參數,利用反射調用Controller里對應的Action方法。

    ????? 3. 輸入數據綁定?
    ????????? Spring提供Binder 通過名字的一一對應反射綁定Pojo,也可以直接從request.getParameter()取數據。
    ????????? 如果沒有另外加入框架封裝,需要手工調用Binder.

    ????? 4. 輸入數據驗證?
    ????????? Sping 提供了Validator接口,而Spring Module還整合了Commons-Validaor 。

    ????? 5. 結果數據放回View?
    ????????? 有個ModelAndView的概念,代表了返回的View名及數據(Model,一個Map)。可以用modelAndView.addObject()放入數據。當然,也可以直接request.setAttribute()。

    ????? 6. Interceptor?
    ????????? AOP概念,其實Servlet里面早有Filter概念,不過Inteceptor可以更靈活的Mapping,另提供postHandle的插入點
    ????????? preHandle() handler開工之前。
    ????????? postHandle() hander開工之后,但DispatchServlet還沒有渲染頁面。
    ????????? afterCompletion() 一切完工之后。
    ???????

    ????? 7. Redirect,Forward頁面及Token防止重復提交。

    ????????? Spring提供 "redirect:index.jsp", "forward:index.jsp"這樣的簡寫。

    ????????? Spring Simple Form提供了防止重復提交的機制。

    ????? 8. 如果想直接編寫Response返回字符串, 而不是返回一個View

    ????????? 將函數的返回類型設為void,使用ss封裝的 rendText(response,String text)函數。

    3.Spring MVC Multi-action

    3.1 基本配置

    < bean?id = " methodNameResolver " ? class = " org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver " > ????????
    ????
    < property?name = " paramName " > ????????????
    ????????
    < value > method </ value > ????????
    ????
    </ property > ?????
    ??
    ????
    < property?name = " defaultMethodName " > ????????????
    ????????
    < value > index </ value > ??????
    ????
    </ property > ?
    </ bean >


    以上配置將按xxx.do?method= list 將調用controller的list()方法

    不過還要爭取早日改為Web2.0式的寫法./book/list.htm 要優于/book.do?action= list。

    其余配置和其他Spring MVC配置差不多,請看bookstore-servlet.xml,留意下面幾個關鍵節點

    < bean?id = " exceptionResolver " >
    < bean?id = " methodNameResolver " >
    < bean?id = " viewResolver " >
    < bean?id = " urlMapping " > (留意最新的urlMapping簡寫語法.)?

    4.SpringSide BaseController
    ?? 繼承于Spring的MultiActionController, 對其作了少量擴展--主要是對數據綁定的擴展,還加了一個SaveMessage函數。

    ?? 1.對數據綁定的擴展:

    ?? a.InitBinder() 初始化Binder,注冊日期類并允許數字類為空。

    ?? b.對Bind and Validate函數的再包裝
    ?? 本來Spring已有bind函數完成bind and validate, 但這個函數一來沒有使用BindException作返回值而是拋出一個ServletException只好自己另外實現一個bindObject()函數。

    ?? c.另外稍稍擴展了一些函數使其更好用。

    2.SaveMessage():

    如果是redirect的關系,message信息放在request.attribute()就會丟失,SaveMessage()將其放在session。
    ?配合messageFilter,在渲染頁面前,把它從session又移回request。


    5.后臺管理通用的BaseManageController
    ? Spring MVC中的SimpleFormController中的交互機制有值得參考的部分,但其只有一個onSubmit函數不能很好的表達CRUD的語義,所以將兩者結合成Multi-ActionFormController是比較好的方法。通過約定命名,在基類實現list(),create()等函數和默認流程,而在子類實現onList(),onCreate()函數。

    ?? 目前只是初步結合兩者,還有很大的改進空間。

    ?? 參考了RoR中的命名。BaseManageController即按照此命名定義基類。

    list?顯示對象列表的頁面?
    create新增對象的輸入界面
    edit?修改對象的輸入界面
    show?只讀顯示對象detai的頁面
    save?新增對象的保存
    update?修改對象的保存
    remove?刪除單個對象
    removeAll?批量刪除對象
    query?查詢
    posted on 2006-11-15 18:11 lbfeng 閱讀(331) 評論(0)  編輯  收藏 所屬分類: Spring技術雜談
    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 亚洲一区二区三区亚瑟 | 亚洲色婷婷综合开心网| 日韩国产欧美亚洲v片| 无码视频免费一区二三区| 亚洲综合久久成人69| 18禁美女黄网站色大片免费观看| 亚洲av无码专区在线播放| 久久青青草原国产精品免费| 国产日韩亚洲大尺度高清| 在线观看免费播放av片| 亚洲欧洲日韩不卡| 亚欧免费视频一区二区三区| 亚洲欧洲校园自拍都市| 亚洲综合区小说区激情区| jizz免费一区二区三区| 久久精品国产亚洲av麻豆蜜芽| 一级全免费视频播放| 免费国内精品久久久久影院| 国产gv天堂亚洲国产gv刚刚碰| 成av免费大片黄在线观看| 亚洲国产精品乱码一区二区 | 国产精品亚洲产品一区二区三区| 国产亚洲综合一区二区三区| 免费看一级做a爰片久久| 你懂的在线免费观看| 亚洲国产美女视频| 国产资源免费观看| 99久久免费国产精精品| 亚洲美女视频一区二区三区| 在线视频免费观看www动漫| 十八禁的黄污污免费网站| 久久久久亚洲Av无码专| 免费va人成视频网站全| 搡女人免费视频大全| 91香蕉国产线在线观看免费| 日韩在线观看免费| 亚洲日韩国产欧美一区二区三区| 亚洲精品无码AV人在线播放 | 午夜不卡久久精品无码免费| 久久人午夜亚洲精品无码区|