2021-11-23 10:11

A Comparative Study of Web Application Design Models Using the Java Technologies

Budi Kurniawan and Jingling Xue

School of Computer Science and Engineering

University of New South Wales Sydney, NSW 2052, Australia


The Servlet technology has been the most widely used technology for building scalable Web applications. In the events, there are four design models for developing Web applications using the Java technologies: Model 1, Model2, Struts, and JavaServer Faces (JSF). Model 1 employs a series of JSP pages; Model 2 adopts the Model-View-Controller pattern; Struts is a framework employing the Model 2 design model; and JSF is a new technology that supports ready-to-use components for rapid Web application development. Model 1 is not recommended for medium-sized and large applications as it introduces maintenance nightmare. This paper compares and evaluates the ease of application development and the performance of the three design models (Model 2, Struts, and JSF) by building three versions of an online store application using each of the three design models, respectively.


Today, Web applications are the most common applications for presenting dynamic

contents. There are a number of technologies for building Web applications, the most popular of which is the Servlet technology . This technology gains its popularity from its superiority over other technologies such as CGI and PHP .Servlets are cumbersome to develop, however, because sending HTML tags requires the programmer to compose them into a String object and send this object to the browser. Also, a minor change to the output requires the servlet to be recompiled. To address this issue, Sun Microsystems invented JavaServer Pages (JSP) . JSP allows HTML tags to be intertwined with Java code and each page is translated into a servlet. A JSP page is a servlet. However, compilation occurs automatically when the page is first requested. As a result, changing the output does not need recompilation. In addition, JSP enables the separation of presentation from the business logic through the use of JavaBeans and custom tag libraries. The norm now in developing Javabased Web applications is to use servlets along with JavaServer Pages.

In the later development, there are a number of design models for building servlet/JSP applications: Model 1, Model 2, Struts , and JSF . Model 1 and Model 2 were first mentioned in the early specifications of JSP. Model 1 strictly uses JSP pages, with no servlets, and Model 2 uses the combination of both servlets and JSP pages. The terms of Model 1 and Model 2 have been used ever since. Model 1 is suitable for prototypes and very small applications, and Model 2 is the recommended design model for medium sized and large applications.

As Model 2 gained more acceptances in the industry, an open source initiative to build the Struts Framework was initiated. Struts perfects Model 2 by providing the controller part of the Model-View-Controller of Model 2. In addition, Struts provides better page navigation management and several custom tag libraries for more rapid development. Despite its steep learning curve and the fact that it was never defined in any specification, Struts has been gaining popularity as the alternative to Model 2.

JavaServer Faces [6] is built under the Java Community Process under JSR-127. Sun Microsystems proposed this technology in the hope that JSF will be the ultimate model for building Java Web applications. The most important feature of JSF is the availability of ready-to-use components such as extensible UI components, easy page navigation, input validators, data converters and JavaBeans management.

The problem facing servlet/JSP programmers are to choose the most appropriate design model. Clearly, JSF provides a better solution in regard to development time.However, some people are not sanguine to adopt this technology for fear of performance penalty due to the overhead of the JSF implementation.

We build three versions of an online store application named BuyDirect using Model 2, Struts and JSF. The parameters compared are the number of lines of code,the number of classes, and the performance measurement results. We investigate which of the design models allows the most rapid development process. We evaluate the performances of the applications built upon these models. We provide some suggestions to perfect the existing design models to make development more rapid.

The rest of the paper is organised as follows. Section 2 discusses the issues in Web development. Section 3 explains how the three design models address these development issues. Section 4 provides the details of the hardware and software used in these experiments. Section 5 presents the experiment results and analysis. Section 6 reviews the related work. Section 7 concludes by offering some suggestions to improve the existing design models.

Java Web Development Issues

All Java Web development uses the Servlet technology as the underlying technology.

As such, all Java Web applications have certain issues that need to be addressed:

minus; User Interface. The user interface is what the client browser renders as HTML tags. Any server-side component used in the application must be encoded into the corresponding HTML elements. Besides for displaying the content and data, the user interface is also responsible in receiving input from the user.

minus; Input Validation. User input needs to be validated. There are two types of input validation, server-side and client-side. As the name implies, the server-side input validation is performed on the server after the input reaches the server. Client-side input validation is done on the browser, usually by using JavaScript or other scripting languages. The advantages of using client-side input validation


Budi Kurniawan和Jingling Xue


新南威尔士大学悉尼,NSW 2052,澳大利亚


Servlet技术是用于构建可伸缩Web应用程序的最广泛使用的技术。在这些技术中,有四种使用Java技术开发Web应用程序的设计模型:Model 1,Model2,Struts和JavaServer Faces(JSF)。Model 1使用一系列JSP页面; Model 2采用模型 - 视图 - 控制器模式; Struts是一个采用Model 2设计模型的框架; JSF是一种新技术,支持即用型组件,用于快速Web应用程序开发。不建议将Model 1用于中型和大型应用,因为它会引入维护噩梦。本文通过使用三种不同的设计模型构建三个版本的在线商店应用程序,比较和评估应用程序开发的简易性和三种设计模型(Model 2,Struts和JSF)的性能。

1 简介

今天,Web应用程序是呈现动态的最常见应用程序内容。有许多用于构建Web应用程序的技术,其中最流行的是Servlet技术。这种技术因其优于其他技术(如CGI和PHP)的优势而受到欢迎。然而服务器开发很麻烦,因为发送HTML标签需要程序员将它们组合成String对象并将此对象发送到浏览器。此外,对输出的微小更改需要重新编译servlet。为了解决这个问题,Sun Microsystems发明了JavaServer Pages(JSP)。 JSP允许HTML标记与Java代码交织在一起,每个页面都被转换为servlet。 JSP页面是一个servlet。但是,首次请求页面时会自动进行编译。因此,更改输出不需要重新编译。此外,JSP通过使用JavaBeans和自定义标记库,可以将表示与业务逻辑分离。现在开发Javabased Web应用程序的标准是使用servlet和JavaServer Pages。

在后面的开发中,有许多用于构建servlet / JSP应用程序的设计模型:Model 1,Model 2,Struts和JSF。Model 1和Model 2首先在JSP的早期规范中提到。Model 1严格使用JSP页面,没有servlet,Model2使用servlet和JSP页面的组合。 从那时起,Mode1和Mode2的术语就被使用了。Mode1适用于原型和非常小的应用,Mode2是中型和大型应用的推荐设计模型。

随着Model 2在业界获得更多接受,开始了构建Struts框架的开源计划。 Struts通过提供模型2的模型 - 视图 - 控制器的控制器部分来完善模型2。此外,Struts提供更好的页面导航管理和几个自定义标签库,以实现更快速的开发。尽管学习曲线陡峭,而且它从未在任何规范中定义过,但Struts作为Model 2的替代品已经越来越受欢迎。

JavaServer Faces 是在JSR-127下的Java Community Process下构建的。Sun Microsystems提出了这项技术,希望JSF成为构建Java Web应用程序的终极模型。JSF最重要的特性是可立即使用的组件的可用性,例如可扩展的UI组件,简单的页面导航,输入验证器,数据转换器和JavaBeans管理。

servlet / JSP程序员面临的问题是选择最合适的设计模型。显然,JSF在开发时间方面提供了更好的解决方案。但是,由于JSF实现的开销,有些人因为担心性能损失而采用这种技术并不乐观。

我们使用Model 2,Struts和JSF构建了一个名为BuyDirect的在线商店应用程序的三个版本。比较的参数是代码行数,类数和性能测量结果。我们研究哪种设计模型允许最快速的开发过程。我们评估基于这些模型构建的应用程序的性能。我们提供一些建议,以完善现有的设计模型,使开发更快。


2 Java Web开发问题

所有Java Web开发都使用Servlet技术作为底层技术。因此,所有Java Web应用程序都有一些需要解决的问题:

- 用户界面。用户界面是客户端浏览器呈现为HTML标记的内容。应用程序中使用的任何服务器端组件都必须编码到相应的HTML元素中。除了用于显示内容和数据之外,用户界面还负责接收来自用户的输入。

- 输入验证。用户输入需要验证。有两种类型的输入验证,服务器端和客户端。顾名思义,服务器端输入验证在输入到达服务器后在服务器上执行。客户端输入验证通常使用JavaScript或其他脚本语言在浏览器上完成。使用客户端输入验证的优点是快速响应并减少服务器工作负载。无论是否存在客户端验证,都应始终执行服务器端输入验证,因为无法保证用户浏览器的脚本功能正在启用,恶意用户可以轻松解决客户端验证问题。

- 模型对象。基于Java的Web应用程序中的模型对象采用JavaBeans的形式。模型对象构成了基于MVC的设计模型的Model部分。模型对象可用于绑定要在稍后阶段使用的组件值。此外,它还可以封装处理所需的业务逻辑。

- 页面导航。几乎所有Web应用程序都有多个页面,用户可以从一个页面导航到另一个页面。所有基于MVC的设计模型都使用servlet作为Controller部分。此servlet还充当应用程序的唯一入口点。当前请求之后要显示的页面由指定的请求参数的值确定。因此管理页面导航至关重要。

3 Web应用程序设计模型

Model 2设计模型基于模型 - 视图 - 控制器(MVC)设计模式。正如Burbeck 所解释的,MVC中有三个主要模块,即控制器,视图和模型。控制器充当应用程序的中心入口点。所有用户交互都通过此控制器。视图包含应用程序的表示部分,模型存储数据或封装应用程序的业务逻辑。在后面的开发中,Struts框架提供了一个通用框架来轻松构建Model 2应用程序。然后,最后一项计划是JavaServer Faces,它也采用了MVC设计模式。



基于Model 2设计模型的Java Web应用程序有一个servlet(称为Controller servlet),用作控制器部分。所有请求首先由此servlet处理,该servlet立即使用RequestDispatcher对象将请求分派给适当的视图。Model 2设计模型中的视图由JSP页面表示。为了存储数据,Model 2应用程序使用JavaBeans,它是应用程序的模型部分。除了存储数据之外,JavaBeans还封装了业务逻辑。每个HTTP请求都带有一个操作参数,该参数指示将此请求分派到哪个视图。程序员必须在应用程序的所有JSP页面中为用户界面编写HTML标记,并编写输入验证代码。此外,模型对象由各个JSP页面管理。


Struts框架是Model 2设计模型的改进。它提供了一个默认的Controller servlet,这样用户就不必编写和编译一个了。Struts通过允许导航规则出现在其应用程序配置文件(XML文档)中来减轻页面导航的任务。对导航规则的更改不需要重新编译Java servlet类。除了更简单的页面导航之外,Struts还提供定义标记库,用于定义表示HTML元素的标记。其中一个标签用于错误处理,因此Struts能够显示本地化的错误消息以支持国际化。Struts应用程序使用JavaBeans作为模型,就像Model 2设计模型一样。另外,Struts程序员必须编写自己的输入验证代码。


JSF还使用了一个名为FacesServlet的控制器servlet。这个servlet是JSF应用程序的唯一入口点。JSF还使用JSP页面作为其视图,使用JavaBeans作为其模型对象。但是,与Model 2和Struts不同,JSF提供了可以在JSP页面上编写的即用型用户界面组件。在调用JSF应用程序的页面时,FacesServlet构造一个表示所请求的JSP页面的组件树。一些组件也可以触发事件,使JSF事件驱动。对于页面导航,JSF使用类似于Struts的方法,即允许在应用程序配置文件(同样,XML文档)中定义导航规则。

JSF应用程序与非JSF servlet / JSP应用程序的区别在于JSF应用程序是事件驱动的。JSF应用程序的用户界面是一个或多个JSP页面,用于承载Web组件,例如表单和输入框。这些组件由JSF自定义标记表示,可以保存数据。组件可以嵌套在另一个组件中,并且可以绘制组件树。就像在普通的servlet / JSP应用程序中一样,您使用JavaBeans来存储用户输入的数据。

4 实验设置



本研究中的在线商店应用程序有三个版本:Model 2,Struts和JSF。所有这些都被命名为BuyDirect,一个销售电子产品的在线商店。该应用程序具有以下功能:

- 根据产品名称或说明搜索某些产品。

- 按类别浏览产品列表。

- 查看产品的详细信息

- 将产品放入购物车。

- 查看购物车

- 退房并下订单。


- 在数据库中搜索某些信息

- 浏览数据库中的数据,

- 执行数据库事务。


图1 数据与所使用表格间的关系

4.2 Servlet容器

Java Web应用程序在servlet容器中运行,该容器是处理应用程序中资源的传入HTTP请求的引擎。对于这个研究项目,我们使用Tomcat,一个来自Apache Software的开源servlet容器基础。我们使用的版本是5.02。


- 创建HttpRequest对象

- 创建HttpResponse对象

- 调用Servlet接口的服务方法,传递HttpRequest和HttpResponse对象。


对于性能测试,我们使用JMeter 1.9 模拟多个用户,同样来自Apache Software Foundation。JMeter允许用户选择执行测试的线程数。每个线程模拟不同的用户。JMeter还允许我们选择测试完成的次数。要使用JMeter测试Web应用程序,请将请求定向到某个IP地址,上下文路径和端口号。您还可以指定要包含在每个HTTP请求中的请求参数。作为输出,JMeter以毫秒为单位通知服务器的响应时间以进行测试。从响应时间,我们得出服务器能够服务的命中/秒数。


我们使用不同的计算机来运行应用程序和进行测试,以获得最大的性能测量精度。运行该应用程序的计算机是具有以下硬件规格的Linux机器:Intel Pentium III 750MHz CPU,256MB RAM。运行测试客户端的计算机是运行JMeter的Windows 2000计算机。该计算机具有以下规格:Intel Pentium III 850MHz CPU,256MB RAM。

5 实验结果




如表1所示,实施Model 2设计模型需要付出最大努力。使用Struts可以缓解这个问题,如果使用JSF,可以最大程度地节省开发。表1显示正在研究的应用程序的类数和行数。


Model 2设计模型的特点是存在一个Controller servlet和许多JavaBeans类(作为模型)和JSP页面(作为视图)。Controller servlet负责使用一系列if语句的页面导航规则。Model 2应用程序编程人员还必须编写输入验证代码,该研究在本研究中在许多自定义标记库中实现。Model 2设计模型中的其他类是自定义标记库和负责输入验证和数据显示的标记库描述符。实际上,输入验证需要590行代码,或者几乎占代码总量的30%。

在Struts应用程序中,Controller servlet由框架提供,因此Struts程序员节省了不必编写一个的时间。但是,他/她仍然需要在应用程序配置文件中编写页面导航规则,这比编写servlet更容易,因为可以使用文本编辑器编辑应用程序配置文件,并且不需要编译。即使Struts框架提供了错误处理机制,仍必须手动完成输入验证。类的数量和输入验证的代码行数

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付