Sung in Blog

           一些技术文章 & 一些生活杂碎
MVC web 框架

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和更复杂的工作流的支持。

对Spring MVC 框架的优秀简介是Thomas Risberg的Spring MVC 教程(http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html)。还可以参见“Web MVC with the Spring Framework”(http://www.springframework.org/docs/web_mvc.html)。

如果你乐于使用你钟情的MVC框架,Spring的分层架构使得你能够使用Spring的其他部分而不用MVC层。我们有使用Spring做中间层管理和数据访问,但是在web层使用Struts,WebWork或者Tapestry的用户。
posted on 2005-10-26 16:07 Sung 阅读(362) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: