欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

Struts 1框架和Struts 2框架的比较研究_依赖性-论文网

时间:2015-03-30  作者:佚名
其execute()方法定义如下:

PublicActionForwardexecute(ActionMappingmapping,

ActionFormform,

HttpServletRequestrequest,

HttpServletResponseresponse)throwsException;

可见,方法中包含参数HttpServletRequest和HttpServletResponse都是ServletAPI提供的接口,也就是说,继承了Action基类的Action类依赖于ServletAPI,这使得Action的测试必须依赖于Web容器,造成其单元测试很不方便。还有ActionMapping和ActionForm都属于Struts1API,这说明Strutsl框架封装请求数据和创建控制类的代码严重StrutslAPI,而且execute方法也是固定的模式,返回的也是ActionForward类型的参数。这样太受规则的束缚,一虽需求有所改变,代码将要做很大的改变。不符合代码重用的要求。

而Struts2的Action类不需要继承任何基类,通常只需要实现Action接口,在JAVA语法中,继承基类和实现接口的意义是不一样的,因为任何一个类只能继承一个基类,但是可以实现多个接口,所以相对于Struts1来说,Struts2的Action类更为灵活。Action接口的execute()方法定义如下:

PublicStringexecute()throwsException;

而且,Struts2的Action类也可以不实现Action接口,只需要在类中提供一个返回类型为String的无参的public方法就行,如:

PublicStringxxx();

可见Action类的方法中不包含任何参数,也就是说Struts2框架的业务逻辑组件不依赖于Web容器,所以这就允许Action类脱离Web容器进行测试,使得单元测试更为简单。

(三)捕获请求参数方式的比较

Struts1使用ActionForm对象来捕获请求参数。与Action类似,所有的ActionForm需要继承ActionForm基类,这样普通的JavaBean就不能被用作ActionFrom,开发者常常创建许多冗余的类来捕获输入,或者使用动态Form来代替创建通常的ActionFrom类。

如果要实现登陆操作,那么为了使Action类能捕获表单的数据,需要创建一个ActionForm对象如下:

publicclassLoginFormextendsActionForm

{

privateStringusername;//定义用户名

privateStringpassword;//定义密码

publicStringgetUsername()

{

returnusername;//获取用户名

}

publicvoidSetUsername(Stringusername)

{

this.username=username;//设置用户名

}

……//省略实现获取和设置密码的getter和setter方法同上

}

然后才能让Action类捕获,如下:

PublicclassLoginActionextendsAction

{

PublicActionForwardexecute(ActionMappingmapping,

ActionFormform,

HttpServletRequestrequest,

HttpServletResponseresponse)throwsException

{

LoginFormuser=LoginForm(form);

……//省略数据验证代码

}

}

Struts2直接使用Action的属性来封装请求参数,避免了使用另外的输入对象。如:

PublicclassLoginActionimplementsAction

{

privateStringusername;//定义用户名

privateStringpassword;//定义密码

PublicStringexecute()throwsException

{

……//省略数据验证代码

}

privateStringusername;//定义用户名

privateStringpassword;//定义密码

publicStringgetUsername()

{

returnusername;//获取用户名

}

publicvoidSetUsername(Stringusername)

{

this.username=username;//设置用户名

}

……//省略实现获取和设置密码的getter和setter方法同上

}

从以上内容可以看出,在Struts1中,业务逻辑层想要捕获表单的数据,就需要创建一个ActionForm对象,而表单的数据有时候也需要传到数据访问层,所以为了避免业务逻辑层和数据访问层依赖于框架,就需要一个和ActionForm类具有相同属性的普通JavaBean类。

查看相关论文专题
加入收藏  打印本文
上一篇论文:RAID0请求性能的模拟评估_磁盘阵列-论文网
下一篇论文:Struts框架在OA系统开发中的应用-论文网
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文