Edzy_Java

            BlogJava :: 首頁(yè) ::  ::  ::  :: 管理 ::
            58 隨筆 :: 12 文章 :: 11 評(píng)論 :: 0 Trackbacks

          Spring包括一個(gè)強(qiáng)大而且高度可配置的MVC web 框架。

          Spring的MVC model類似于Struts。在多線程服務(wù)對(duì)象這點(diǎn)上,Spring的Controller類似于Struts Action,只有一個(gè)實(shí)例處理所有客戶的請(qǐng)求。然而,我們相信Spring的MVC比起Struts有很多優(yōu)點(diǎn),例如:

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

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

          Spring MVC是真正的view無(wú)關(guān)的。你不會(huì)被強(qiáng)制使用JSP,如果你不想那么做的話。你可以使用Velocity,XSLT或其他view技術(shù)。如果你想要使用自定義的view機(jī)制——例如,你自己的模板語(yǔ)言——你可以簡(jiǎn)單實(shí)現(xiàn)Spring的View接口并且把它集成進(jìn)來(lái)。

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

          Web層變成了業(yè)務(wù)對(duì)象層之上的薄薄一層。這鼓勵(lì)了好的習(xí)慣。Struts和其他專門(mén)的web框架讓你去實(shí)現(xiàn)你自己的業(yè)務(wù)對(duì)象;Spring提供了你應(yīng)用程序所有層的集成。


          如在Struts 1.1中所見(jiàn)的,你可以有和你在Spring MVC 應(yīng)用程序中所需要的一樣多的dispatcher servlets。

          下面的例子展示了一個(gè)簡(jiǎn)單的Spring Controller如何能夠訪問(wèn)定義在應(yīng)用程序context中的業(yè)務(wù)對(duì)象。這個(gè)controller在它的handleRequest()方法中執(zhí)行了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是一個(gè)GLUE web services代理,由Spring FActoryBean返回。然而,Spring把controller從底層web service庫(kù)中分離出來(lái)。接口可以使用普通的Java對(duì)象,test stub,mock對(duì)象或者如下面要討論的EJB代理實(shí)現(xiàn)。這個(gè)contorller不包括資源查找;除了支持它的web交互的必要代碼之外沒(méi)有別的什么了。

          Spring還提供了數(shù)據(jù)綁定,forms,wizards和更復(fù)雜的工作流的支持。

          posted on 2006-11-15 18:12 lbfeng 閱讀(259) 評(píng)論(0)  編輯  收藏 所屬分類: Spring技術(shù)雜談
          主站蜘蛛池模板: 伊通| 社旗县| 灌南县| 那曲县| 永吉县| 望奎县| 当阳市| 涪陵区| 都昌县| 元谋县| 兴义市| 广昌县| 肥西县| 屯门区| 道孚县| 绍兴市| 平山县| 邵东县| 石台县| 霸州市| 韶关市| 繁峙县| 华容县| 娄烦县| 铅山县| 新化县| 西贡区| 七台河市| 红原县| 汾阳市| 呼伦贝尔市| 西充县| 仪陇县| 阿坝县| 华容县| 海阳市| 克山县| 浑源县| 日土县| 枣阳市| 洮南市|