Edzy_Java

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

          Spring包括一個強大而且高度可配置的MVC web 框架。

          Spring的MVC model類似于Struts。在多線程服務對象這點上,Spring的Controller類似于Struts Action,只有一個實例處理所有客戶的請求。然而,我們相信Spring的MVC比起Struts有很多優點,例如:

          Spring在controllers,JavaBean,models和views提供了一個非常清晰的劃分。

          Spring的MVC是非常靈活的。不像Struts,它強制你的Action和Form對象進入固化的層次之中(因而你迫使你使用Java的實體繼承),Spring MVC完全是基于接口的。而且,通過插入你自己的接口幾乎Spring MVC 框架的所有部分都是可配置的。當然我們也提供了方便的類作為實現選擇。

          Spring MVC是真正的view無關的。你不會被強制使用JSP,如果你不想那么做的話。你可以使用Velocity,XSLT或其他view技術。如果你想要使用自定義的view機制——例如,你自己的模板語言——你可以簡單實現Spring的View接口并且把它集成進來。

          和其他對象一樣,Spring的Controllers是通過IoC配置的。著使得它們易于測試,并且完美地和其他由Spring管理的對象集成。

          Web層變成了業務對象層之上的薄薄一層。這鼓勵了好的習慣。Struts和其他專門的web框架讓你去實現你自己的業務對象;Spring提供了你應用程序所有層的集成。


          如在Struts 1.1中所見的,你可以有和你在Spring MVC 應用程序中所需要的一樣多的dispatcher servlets。

          下面的例子展示了一個簡單的Spring Controller如何能夠訪問定義在應用程序context中的業務對象。這個controller在它的handleRequest()方法中執行了Google搜索:

          public ? class ?GoogleSearchController?? implements ?Controller? {?
          ????????
          private ?IGoogleSearchPort?google;?
          ????????
          private ?String?googleKey;?
          ????????
          public ? void ?setGoogle(IGoogleSearchPort?google)? {?
          ????????????????
          this .google? = ?google;?
          ????????}
          ?

          ????????
          public ? void ?setGoogleKey(String?googleKey)? {?
          ????????????????
          this .googleKey? = ?googleKey;?
          ????????}
          ?

          ????????
          public ?ModelAndView?handleRequest(?
          ????????????????????????????????HttpServletRequest?request,?HttpServletResponse?response)?
          ????????????????
          throws ?ServletException,?IOException? {?
          ????????????????String?query?
          = ?request.getParameter( " query " );?
          ????????????????GoogleSearchResult?result?
          = ?
          ????????????????????????
          // ?Google?property?definitions?omitted?

          ????????????????????????
          // ?Use?google?business?object?
          ????????????????????????google.doGoogleSearch( this .googleKey,?query,?
          ????????????????????????????????start,?maxResults,?filter,?restrict,?
          ????????????????????????????????safeSearch,?lr,?ie,?oe);?

          ????????????????
          return ? new ?ModelAndView( " googleResults " ,? " result " ,?result);?
          ????????}
          ?
          }
          ?

          這段代碼使用的prototype中,IGoogleSearchPort是一個GLUE web services代理,由Spring FActoryBean返回。然而,Spring把controller從底層web service庫中分離出來。接口可以使用普通的Java對象,test stub,mock對象或者如下面要討論的EJB代理實現。這個contorller不包括資源查找;除了支持它的web交互的必要代碼之外沒有別的什么了。

          Spring還提供了數據綁定,forms,wizards和更復雜的工作流的支持。

          posted on 2006-11-15 18:12 lbfeng 閱讀(259) 評論(0)  編輯  收藏 所屬分類: Spring技術雜談
          主站蜘蛛池模板: 杭锦后旗| 海丰县| 大荔县| 志丹县| 四子王旗| 新余市| 民权县| 卫辉市| 新巴尔虎左旗| 凯里市| 三门县| 南涧| 宣威市| 尉氏县| 嘉义市| 凯里市| 大石桥市| 平凉市| 东海县| 绥德县| 溧水县| 彭水| 大悟县| 广元市| 星座| 司法| 闽侯县| 长寿区| 大姚县| 彭阳县| 平顺县| 盐山县| 旅游| 门头沟区| 塘沽区| 黄陵县| 信宜市| 北票市| 高雄县| 桑植县| 涟水县|