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 閱讀(264) 評論(0)  編輯  收藏 所屬分類: Spring技術雜談
          主站蜘蛛池模板: 新野县| 扬中市| 巴彦淖尔市| 武邑县| 阳曲县| 平果县| 靖宇县| 石首市| 蓬溪县| 游戏| 如皋市| 安乡县| 巩义市| 那坡县| 岳池县| 华蓥市| 巫山县| 札达县| 湟源县| 得荣县| 屯昌县| 龙南县| 扎鲁特旗| 绍兴县| 温泉县| 诸城市| 宁波市| 清涧县| 璧山县| 永丰县| 贵德县| 民县| 丹凤县| 滨州市| 四川省| 宜君县| 舟曲县| 嘉义县| 邢台县| 寿阳县| 香河县|