摘要
Struts是一个优秀的Java Web开发框架。Struts是Apache项目之一,现在Struts已经在Java开发团体中得到了广泛的支持。在这篇文章中Julien Mercay 和Gilbert Bouzeid将向我们介绍Struts的处理流程、描绘Struts框架,最后提出了Model 2x的设计方法。Model 2x用XML/XSLT替换掉了原来的表现层中的JSP页面。Model 2x通过这种方式更加明晰地划分了业务逻辑层和表现层。
正文
自从Servlet API发布以来,Java开发人员使用了不同的技术来开发Web应用程序。Web开发人员已经认识到了Model 2的优点。Model 2 指的是基于MVC模式的WEB开发框架。Model 2能把应用逻辑层和表现层较好地区分开来。Struts构建在Model 2 之上,它向Java开发人员提供了一个普通的控制器Servlet,还有集中式的资源配置、资源管理以及错误处理等功能。
这篇文章中我们引入了Model 2x。Model 2x可以将逻辑层和表现层更好地分离。我们先介绍Model 1和Model 2,然后讲述一下Struts是如何实现MVC架构的,最后向读者展示一下如何通过XML、XSLT来对现存的模式加以改进。
Model 1
理解Model 1是十分重要的,如果不熟悉Model 1将很难理解我们在文章中介绍的其他几个架构。Model 1的基础是JSP文件。JSP从Http请求中取得参数,调用所需的业务逻辑,处理Http对话,然后生成HTML页面。
一个完整的Model 1项目包括一组JSP文件(这些文件大部分都是彼此独立的)、一组所需的Java类和其他组件。一些早期的Web开发技术比如ASP、PHP都使用类似的模式来开发的。
Model 1主要也许是唯一的优势就是简单。Model 1中业务逻辑和显示逻辑混合在JSP页面中没有进行抽象和分离,所以在进行快速和小规模的应用开发时,有非常大的优势的。但用Model 1 开发复杂的项目的开发时,将不可避免地导致项目管理的困难。
Model 2, MVC, and Struts/JSP
图1
图1说明的是MVC架构中的三个部分,以及它们在Struts/JSP中的实现。
控制器(Controller):Struts的最主要的部件就是一个普通的控制器Servlet。控制器是每一个发送到Struts的Http请求的入口点。控制器把所有的请求经解释后分发action。这些action是Struts Action类的子类。由开发人员负责实现它们。控制器也会自动的把Http请求中的参数加入到Form bean中。Action负责实现核心的业务逻辑,比如做EJB调用,通过Java Bean访问模型(model)。在Struts中可以通过定义一个XML文件来描述请求URI、具体业务逻辑处理、代表客户提供的数据的Form组件三者之间的映射关系。控制器的就是通过这个XML文件来定义的。