当前位置:首页 > 全部子站 > IT > 思科认证

用Web程序从Struts向Stripes框架的移植

来源:长理培训发布时间:2017-12-22 09:29:32

 百度广告

  一、引言 
  在决定移植一个应用程序前,应该首先问一下"为何不使用现在的框架?"在我看来,Struts是一种稳定的具有良好文档的框架,并且有一大批开发者社区成员,但是其配置很麻烦,而且其表单、行为、应用程序流和校验的分离有时会带来很多麻烦。这种情形在我的Struts应用程序不断变大时越发糟糕。最后,纯粹从一种维护的角度,我决定把它移植到一种新的框架。

  开始,我认为没有一种框架(Java ServerFaces,Tapestry,WebWorks,Spring MVC)值得从Struts迁移向其迁移。例如JSF这样的框架看上去极不友好。其它的,例如Tapestry和WebWorks,涉及到整页整页的看上去令人麻烦的国际化系统。而从配置角度来看,Spring MVC看上去并不比Struts好多少。我选择的框架应该仅需适当的学习时间,还要与移植效益相称;而且,它还一定要使我编码、排错与维护更为容易。

  二、发现Stripes框架 

  另外吸引我的是Stripes文档。象框架本身一样,文档也是干净、清洁而简练。其标签库文档和API都具有良好的归档,而且该框架的每一种特征几乎都有相应的示例源码。这些优秀的文档再加上我的现有Struts知识使我坚信,我可以快速地掌握这种Stripes框架。

  值得注意的是,Stripes还包括另外一些使其成为一种良好的AJAX平台的特征,例如它提供了一种流式方案,该方案允许对AJAX实现进行改进的错误处理。然而,对于我来说,最终的决定因素还是我能够清楚地看到它会使我的生活更容易些。我估计,在我的应用程序的行为/配置/校验部分,我只需使用约一半的代码就够了。更少的代码意味着了更少的错误、更快的开发时间和更容易的。

  三、移植过程 

  (一) JavaServer Pages 

  Stripes依赖于JSTL实现JSP视图中的逻辑。我在我的应用程序中混合使用了Struts逻辑标签和JSTL。通过把我的所有逻辑标签移植到JSTL,我能够利用JSTL的优越的if/else和case语句的能力处理,它们可能是很原始的或者根本不存在于Struts逻辑taglib中。

  (二) 国际化 

我的移植的最有意义的部分是去掉了我的Struts Action表单,这是在Action类中进行的,要求大量的XML标记和冗长的转换,如下例所示: 
type="org.apache.struts.validator.DynaValidatorForm"> 
ActionMapping mapping, ActionForm form, 
throws Exception {Employee employee=new Employee(); 
employee.setFirstname(eaf.getString("firstname")); 
employee.setPhone (eaf.getString("phone")); 
employee.setEmployeeid ((Integer)eaf.get("employeeid")); 
employee.setBirthdate(MyUtils.convertStringToDate(eaf.getString("birthdate"))); 
EmployeeDAOService.updateEmployee(employee); 

public class UpdateEmployeeActionBean implements ActionBean { 
private Employee employee; 
return context; 
public void setContext(ActionBeanContext context) { 

this.employee = employee; 
public Employee getEmployee() { 

EmployeeDAOService.updateEmployee(employee); 
}} |||

  在大多数情况中,我能够嵌入我的域对象的一个副本作为我的Stripes ActionBean类的一个属性并且仅包括涉及把该对象移入/移出我的持久层的代码部分。我把所有表单处理都交给了Struts Action来实现,包括初始化配置、把表单强制转换成适当的类以及从域对象中来回转换数据(约30%的代码是在大多数Action类中实现的)。在Stripes中并不需要这样。

  简言之,把域对象作为你的ActionBean类的一个属性嵌入,为该类提供了getter和setter方法。总之,所有有趣的地方(包括列表)都在HTML视图的表单中体现出来。

  所有我对表单的操作也都可以通过查询串参数方式来实现。我仅把这些参数作为我的ActionBean的一个属性,而如果它们是请求的一部分的话,可以把它们自动地复制到相应的域中。

  (四) 校验 

  (五) 应用程序流程 

  为此,Stripes共提供了三种不同方式以便把请求映射到行为层: 
尽管与Struts配置相比,前两种方法似乎有点"硬编码"特征,但是useBean标签提供了大量的灵活性。借助于该标签,JSP可以存取多个ActionBean或类以得到其所需要的内容。
四、结论 

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部