-
毕业论文外文翻译
超市管理系统设计中英文对照外文翻译文献
(
文档含英文原文和中文翻译
)
基于<
/p>
Java
技术的
Web
< br>应用设计模型的比较研究
摘要
Servlet
技术在建立可扩展性
W
eb
应用中是被应用最广泛的技术。在运用
JAVA
技术
开发
Web
应用中有
四种模型,分别是:
Model
1
、
Model
2
、
Struts
和
JavaServer
Faces
(
JSF
)。
Model 1
使用一连串的
JSP
页面;
Model
2
采用了模型-视图-控制器(
MVC
)
模式;
Struts
是一个采用了<
/p>
Model 2
设计模型的框架;
JSF
是一种支持
ready-to-use
组
件来进行快速
Web
应用开发的新技
术。
Model 1
对于中等和大型的应用来说很难维护,
p>
所以不推荐使用。本文通过利用
Model 2
、
Struts
和
JSF
这三种模型分别构建三个不同
1
毕业论文外文翻译
版本的在线商店应
用程序,来比较和评价这三种模型在应用程序开发和性能上的差
异。
1.
绪论
当今,
Web
应用是一种展现动态内容的最普遍的方式。<
/p>
构建
Web
应用有许多种方法,
其中最流行的是
Servlet
技术。这种技术
的流行是因为它比
CGI
、
PHP
p>
等其他技术更具
优越性。然而
Servle
t
对于开发来说还是麻烦的,因为它在传送
HTML
标签时需要程序
员将他们组合成为一个字符串对象,再将这个对象传给浏览
器。同样的,对于输出的
一个很小的改动也要求
Servlet
被重新编译。基于这个原因,
SUN
公
司发明了
JavaServer Pages
(
JSP
)技术。
JSP
允许<
/p>
HTML
标签和
Java
代码混合在一起,每个页面
将被转化为一个
Servl
et
,一个
JSP
就是一个
Servlet
,而且编译将在
JSP
页面第一次被
请求时自动进行,改变输出也不需要重新编译。
另外,通过使用
JavaBean
和定制标签库,
JSP
能够将表示与业务逻辑相分离。
现
今,基于
JAVA
的
Web
应用开发标准是将<
/p>
servlets
与
JSP
结合在一起。随后,出现了许多
种设计模型用来构建
servlet/JSP
应用:
Model
1
、
Model
2
、
Struts]
和
JavaServer
Faces
(
JSF
)。
Model
1
和
Model 2
最早是在
JSP
规范中被提及的。
Model 1
只使用
JSP
而不使
用
servlet
,
Model 2<
/p>
则结合了
JSP
与
servlet
。
Model
1
和
Model
2
的使用是有条件的,
Model
1
适合与开发原型和非常小的应用,
Model 2
则是开发中型和大型应用推荐的设
计模型。由于
M
odel 2
越来越被行业所接受,一个建立
Struts
p>
框架的开源项目也因此
被启动了。
Stru
ts
通过为
Model
2
提供了模型-视图-控制器中的控制器来完善
Model <
/p>
2
。另外,
Struts
提供了更好的页面导航管理机制和一些定制标签库,能够进行更快
速的开发。尽
管它学习难度大,并且,实际上它没有在任何的规范中被定义,但是它
还是作为
Model
2
的一种替代获得了流行。
JavaServer Faces
是在
JCP
的
JSR-127
规范
下被建立。
Sun
公司力推这项技术,希望它能够成为构建
Java Web
p>
应用的最终模型。
JSF
最重要的特性是对
ready-to-use
组件的支持,比如:可扩展用户接口
组件、简易
的页面导航、输入验证、数据转换和
JavaBea
n
管理机制。
servlet/JSP
程序员面临的
问题是选择最合适的设计模型。明显的,
JSF<
/p>
在开发时间上提供了更好的解决方案。
然而,有些人担心实施
p>
JSF
的开销所带来的性能下降而不愿采用这种技术。
我们使用
Model
2
、
Struts
< br>和
JSF
分别构建三个不同版本的在线商店应用,
比较的
参数是:代码的行数、类的数目和性能测试结果。
2
毕业论文外文翻译
我们研究哪种设计
模型能够进行最快速的开发。我们评估基于这些模型的应用的
性能。我们提供一些建议来
完善现有的设计模型,使得开发速度更快。
文章的余下部分组织如下:
第二部分
讨论了
Web
开发中的问题,第三部分解释了三个设计模型如何
来解决这
些开发问题,第四部分详细介绍了试验所需要的硬件和软件,第五部分给出试验
的结
果并进行分析,第六部分回顾相关工作,第七部分得出结论并提出了一些改进现有设
计模型的建议。
开发中的问题
所有的
Java
开发都使用
Serv
let
技术作为基础技术。同样的,所有的
Java
Web
应
用都有一些问题需要解决:
1.
用户接口是在客户浏览器上呈现出的
HTML
标签。任何在应用中使用的服务器端
组件都必须被编
码成为正确的
HTML
标签。除了显示内容和数据外,用户接口
还负责接
收用户的输入。
2.
用户的输入必须要验证。输入的验证有两种类型:服务器端和客户端。顾名思
< br>义,服务器端的输入验证是在输入的数据到达服务器后,在服务器上进行的。客户端
的输入验证是在浏览器上完成的,一般使用
JavaScript
或其他脚本语言。利用客户端
进行输入验证的好处是反应迅速,而且能够减轻服务器
的负载。无论是否存在客户端
输入验证,服务器端的输入验证是一定要执行的,因为无法
保证用户的浏览器的脚本
特性被打开,而且恶意用户能够很轻松的绕过客户端的验证。<
/p>
3.
在基于
J
ava
的
Web
应用中模型对象是以<
/p>
JavaBean
的形式出项的。模型对象组成
< br>了基于
MVC
设计模型的模型部分。一个模型对象能够用
来绑定一个组件的值,以备下
阶段使用。此外,它能够封装需要执行的业务逻辑。
4.
大多数的
We
b
应用都包含多个页面,能够使用户从一个页面跳转到另一个页面。
所有的基于
MVC
的设计模式都使用
Servlet
作为控制部分。这个
Servlet
也作为进入应
用的唯一入口。当前的请求之后哪个页面会被显示取决于请
求参数的具体值。管理页
面导航是至关重要的。
3
毕业论文外文翻译
应用设计模型
Model 2
设计模型是基于模型-视图-控制器(
MVC
)设计模式的。正如
Burbeck
p>
所解释的,在
MVC
中有三个主要模块:控
制器,视图和模型。控制器作为应用的中心,
所有的用户交互都要通过它。视图包含了应
用的显示,而模型用来存储数据和封装应
用的业务逻辑。随后,
Struts
框架提供了一个通用框架能够容易的构建
Mode
l 2
应用。
最主动的是同样使用
MV
C
设计模式的
JSF
。在之后的章节,
我们将来讨论这三种设计模
型,并且说明每一种设计模型是怎样来解决之前提到的开发问
题。
3.1 Model 2
一个基于
Model
2
设计模型的
Java Web
应用有
一个作为控制部分的
servlet
(称为
控制器
servlet
)。所有的请求首先被这个
servlet
处理,它通过
RequestD
ispatcher
对象将请求迅速的分派到合适的视图。在
M
odel 2
中视图是通过
JSP
页面
来表现的。
JavaBean
作为
Mo
del
2
的模型部分,
用来在应用
中存储数据。
除了存储数据,
JavaBean
还用来封装业务逻辑。每个
HTTP
请求都带有一个行
为参数,用来指出哪个视图指派给
这个请求。程序员必须在所有的
JSP
页面中为用户接口编写
HTML
标签代码,并且编写
输入验证代码。此外,模型对象被单独的
JSP
页面所管理。
3.2
Struts
Struts
框架是
Model
p>
2
设计模型的一个改进。
它提供了一个默认
的控制器
servlet
,
使得程序员
不用非得去编写一个。
Struts
允许在应用配置文件(一个
XML
文件)中编
写导航规则来减轻页
面导航的任务,改变导航规则不需要重新编译。除了更简单的页
面导航,
Struts
还提供了定制标签库来定义标签代表
HT
ML
元素。这些标签中的一些用
来处理异常,而且
Struts
支持国际化,能够显示本地化的错误消息。就像
Model 2
一
样,
Str
uts
使用
JavaBean
作为模型
。此外,
Struts
程序员必须编写输入验证代码。
3.3 JSF
JSF
同样使用了一个控制器
servlet
,称为
FacesServlet
。这个
Servlet<
/p>
是整个
JSF
应用的唯一入口。
JSF
同样使用
JSP
页面作为它的视图,使用
JavaBean
作为模型对象。
p>
与
Model 2
和
Struts
不同,
JSF
提供了能
够写入
JSP
页面的
ready-
to-use
的用户接口组
4
毕业论文外文翻译
件。在
JSF
应用中的页面的调用,
FacesServ
let
建立了一个组件树来显示
JSP
页面的请
求。大部分的组件还能够触发事件,来构成
JSF
p>
的事件驱动。对于页面导航,
JSF
使用<
/p>
了和
Struts
类似的方法,即允许在
一个应用控制文件(
XML
文件)中定义导航规则。
JSF
应用与非
JSF
的
servlet/JSP
应用的不同
在于
JSF
是事件驱动的。
JSF
p>
的用户接
口是一个或多个
JSP
页面,用来服务诸如表单和输入框等
Web
组件。
这些组件以
JSF
定
制标签的形式出现
而且能够保存数据。一个组件能够嵌套在另一个组件中,有可能形
成一个组件的树状结构
。在普通的
servlet/JSP
应用中,使用
JavaBean
来存储用户输
入的数据。
4.
运行环境
以下是我们实验的软硬件详细描述。
4.1 Servlet
容器
Java Web
应用是在
servl
et
容器中运行的,在应用中它一个引擎,用来处理接踵
而来的
请求资源的
HTTP
请求。在这个试验项目中,我们使用
Tomcat
-一个来自
Apache
软件基金会的开源的
servlet
容器,版
本号是
6.0
。基本上,一个
serv
let
容器通过执
行下面的任务来处理一个
servlet
:
?
创建一个
HttpRequest
对象
?
创建一个
HttpResponse
对象
?
传递
Ht
tpRequest
、
HttpResponse
对象来调用
Servlet
接口的
< br>service
方法
4.2
测试用客户端
为了进行性能测试,我
们使用同样来自
Apache
软件基金会的
JMeter1.9
来模拟多
用户。
JMeter
允许用户选择一定数量的线程来执行测试。每个线程模拟了一个不同的<
/p>
用户。
JMeter
来能允许我们选择完
成一次测试的测试次数。
使用
JMeter
来测试一个
Web
应用,你只要直接向某个
IP
地址、上下文路径和端口号发出请求。你也可以将请求参
< br>数包含在
HTTP
请求中。
对于
一个测试,
JMeter
将服务器的响应时间以毫秒的形式输出
。
从响应时间,我们能够得到服务器执行服务的每秒命中次数。
5
毕业论文外文翻译
4.3
硬件
为了得到最大的性能度量精度,
我们使用不同的计算机来进行应用的测试。运行
应用的是一台
X
P
计算机,它的配置如下:
Intel Core 1GHz
CPU
、
1G RAM
。测试用客<
/p>
户端是运行
JMeter
的
Windows2000
计算机,具体配置如下:
I
ntel
Core
1GHz
CPU
、
1G
RAM
。
5.
结论
我
们得到两类实验结果:开发的难易程度和性能。开发的难易程度比较了类的数
目和代码的
行数。这些数目显示了遵从某个设计模型来开发一个应用的难易程度。一
个应用包含较少
的类和较少的代码行数说明应用相对而言更容易构建。一个应用包含
较多的类说明应用需
要花费更多的时间来开发。
性能度量结果是通过比较这两个操
作来获得的。查找操作是一个应用中最普通的
操作以及浏览操作。
5.1
应用开发的难易程度
<
/p>
就如表
1
显示的,应用
< br>Model 2
设计模型需要花费最多的努力,使用
St
ruts
能够使
问题减轻一点,使用
J
SF
最省力。
表
1
应用中类的数目和代码行数
Model 2
设计模型的特点是存在一个控制器
servlet
和多个
JavaBean
类(作为模
型)及
JSP
页面(作为视图)。控制器类通过一系列的
if
语句来负责页
面导航规则。
Model 2
程序员还必须为输入验证编写代码
,在这个实验中是通过在内部编写许多定
制标签库来完成的。在
Model
2
设计模型中的其它类是定制标签库,这些标签是用来
6
毕业论文外文翻译
负责输入验证和数据显示的。实际上,输入验证使用了
590
< br>行代码,大约是所有代码
的
30%
。
在
Struts
应用中
,
控制器
servle
t
是由框架提供的,所以
Struts
程序员不用编写
它,节省了时间。然而,他仍然需要在应用控制文件中编写导航规则,这
比编写一个
servlet
容易些,因为应用控制文件可以用文
本编辑器编辑,不必编译。虽然
Struts
框架提供了错误处
理机制,但仍然需要手工编写输入验证。用来进行输入验证的类的
数量和代码的行数与<
/p>
Model 2
应用的很相似。
Stru
ts
中其他的类是
Action
类,用
来调
度请求到默认的控制
servlet
。
在
JSF
中,提供使用验证组件而不用编写输入验证,所以
JSF
应用
开发人员可以跳
过这个任务。此外,页面导航和
Struts<
/p>
相同,都是使用一个应用控制文件。在
JSF
中,
其他的类是
ContextListener
、
ActionListener
和数据库工具
类。
5.2
性能度量
对于每一个操作,通过
p>
1
-
10
个并发用
户,我们来测量服务器的响应时间(以毫
秒形式)
每个用户在<
/p>
JMeter
中设定了一定数量的线程。
每次测试进行
10
次,
取平均值。
p>
每个操作在下面的章节中讨论。
5.2.1
查询操作
查询操作,其名称或描述与关键字匹配。它将执行一个
SQL
的
SELECT
语句。图
2<
/p>
比
较了三个版本的应用的查询操作。
图
2
查询操作的性能比较
7
毕业论文外文翻译
在
Model 2
应用中,对于一个用
户,服务器平均的响应时间是
173
毫秒,对于
10
个
用户是
919
毫秒。在
Struts
应用中,相对地,其值是
189
毫秒和
900
< br>毫秒,在
JSF
中则是
210<
/p>
毫秒和
932
毫秒。响应时间随着并发用
户数成比例的增加,说明了服务器仍然能够
应付装载。
Model 2
应用开销最小,所以它的平均性能比
Struts
和
JSF
更
好。然而,
Struts
的
性能同
p>
Model2
的相同,这是因为服务器有足够的内存用来加载运行
Struts
需要的
Struts
p>
库。同时,应该注意到
Struts
中的页
面导航规则是加载和存储在一个叫
ActionMapping
的对象中。因此,给出一个请求参数,导航到下个页面是通过查找得
到的。另一方面,给
出一个请求参数,
Model 2
应用是利用一系列的
if
语句来得到下
一个页面的导航。
在几乎所有的并发用户数字中,
JSF
应用的性能都稍逊于其他应用。这可能是由
于
J
SF
将时间消耗在为每个请求构建一颗组件树上。但
JSF
p>
的服务器响应时间与其他应
用差距并不明显。
5.2.2
浏览操作
三个版本的浏览操作
,
如同查询操作,将执行一
个
SQL SELECT
语句。图
3<
/p>
这个操作
的测试结果。
图
3
浏览的性能比较
平均来说,
Model 2
应用的性能
最好,因为它具有最少的开销。对于是一个用户
服务器的平均响应时间是
111
毫秒,
10
个用户是<
/p>
899
毫秒。
Struts
应用有着同样的性能,
对于是一个用户服务器的平均响应时间是
180
毫秒,
10
个用户是
920
毫秒。
JSF
< br>则稍落
8
毕业论文外文翻译
后与其他两个应用
,相对地,它的时间是
190
毫秒和
1
009
毫秒。响应时间随着并发用
户数成比例的增加,意味着服
务器能很好地服务这些用户。浏览地平均性能测量结果
同查询操作很相似,这是因为这两
种数据库操作类似。
6.
相关工作
使用
servlet
、
PHP
(版本
3
)、通用网关接口(
CGI
)来比较基于数据库的
Web
应
用的性能。
经过执行从
My
SQL
数据库返回数据的一系列的基准测试,
发现
Java
servlet
使用持久数据库连接的方
案性能最佳。
PHP3
使用持久数据库连接相对于
CGI
方案而言
性能相当不
,
也同样提到了使用
Java
servlet
的优势。根据这些作者,
Java servl
et
是迎合电子商务(比如在线商店)需求的最佳选择,而且能够在高交互式模式中处理
客户请求。
比较
PHP4
、
Java servlet
、和
EJB
。使用两个应用来测试了这三种结构
,
研究显示
了
PHP4<
/p>
比
Java servlet
更有效,而
EJB
的性能比
servlet
差。然而,注意到作为
Java
方
案的一部分的
servlet
提供了适应性,能够
移植到不同操作系统的其他系统上。
7.
结论
我
们发现使用
JSF
构建
Web
应用最迅速;
Model 2
最慢但性能最好;
Struts
应用在
计较中处于其他两
种设计模型中间。
我们提出了一些建议,用来大体上改善
p>
Servlet
技术和增强基于这些设计模式的
应用的性能。
Struts
没有
基于任何规范,也没有文档来讨论它的内部工作方式。因此,很难知
道哪些实现了以及哪
些改善了。
Servlet
技术,<
/p>
Servlet2.3
规范没有定义任何的缓存机制,也没有在即
将到来的
Servlet2.4
中提及。尽管
< br>Web
应用的内容具有动态性,但有写内容也不是经常去改变
了。比如,在在线商店的应用中,用户可以浏览的商品种类可能每隔一个月才变动一
次。如果这些半静态的内容必须每次在需要的时候从数据库中获取,将浪费大量的编
程资
源。
Servlet
程序员通过编写一个对象缓存某些内容来实
现缓存。然而,只要没
有缓存标准,许多程序员将反复的写相同的代码断。
Model 2
主要的缺点是页面导航规则在控制
器
servlet
中是硬编码的。这意味着程
< br>序流程的任何微小的改动就需要控制器
servlet
重
新编译。解决这个问题的方法是在
9
毕业论文外文翻译
应用启动时,提供
一个映射器来读取页面导航规则。在控制器
servlet
的<
/p>
init
方法中
很容易添加代码。这个方
法只执行一次,就是在
servlet
首次被载入内存的时候。
如
果属性文件在每次改动后需要重新读取,程序员可以在每次请求时检查属性文件的时<
/p>
间戳,将它于先前读入的文件比较。如果它比之前读入的文件的时间戳更新,则重新
构建映射器。这个特性可以在上下文对象的初始化参数中开启或者关闭。从开发的角
度来讲,这个特性应该开启。在部署时,这个特性应该关闭。使用属性文件来存储页
面导航规则还可能避免在控制器中的一连串的
if
语句
,
它将在每次请求时消耗时间。
可以使
用一个
HashMap,
将请求参数作为
Key
值,将跳转页面作为
Value
值。这个设计模
型的另一个缺陷是缺少标准的输入验证组件和用户接口组件,而这些将
在
JSF
中得到
解决。
JSF
解决了开发
Web<
/p>
应用中的大部分问题,比如:页面导航管理、用户接口组件和
输入
验证组件。然而,由于这项技术仍然很年轻,还没有太多的用户接口可用,强迫
了程序员
将
JSF
和非
JSF
< br>的
servlets/JSP
页面相结合。
JSF
是事件驱动的,
JSF
程序员通
过编写事件监听来决定
JSF
应用的行为,就像
Swing
应用中的监听器一样。在
JSF 1.0
版本中,通常有两类事件能够被触发:
ActionEvent
和
ValueChanged
Event
,但这已经
能在应用和用户之间提供足够好的交互性
了。
10
毕业论文外文翻译
原文
:
11
-
-
-
-
-
-
-
-
-
上一篇:智能家居中英文翻译资料
下一篇:某变电所毕业设计的中英文对照(中英文翻译)