首先,它完全可以不定义Actionform(虽然大多数时间我们不建议这样做)或者可以定义一个DynaForm。也就是说Actionform不是必须的。其次关于Action,如果没有经过数据处理的跳转,我们完全可以通过对struts.config.xml文件的配置来实现,比如使用action forward。或者直接用超连跳走,我想这是完全可以的。多个页面可以对应一个同Action的不同方法,例如DispatchAction,也就是说我们可以在一个模块的开发中只配置一个Action。而Action操作完成后的转发页面也不是必须配置struts.config.xml。常用的方式(至少是我):return mapping.findForward(pageName);
但也可以这样写:return new ActionForward(pagePath);
这里的pageName为已在struts配置文件中定义的跳转页面的名称,而pagePath则是实际跳转路径。但struts的路径设置好象都是必须要以“/”开始。也就是说要从根目录开始查找。
虽然使用上来讲不是非常麻烦,但基于框架本身来说,编码人员还是要经常与请求打交道,也就是说我们要更多关注语言以外的一些东西。也可能因为这点原因,更多基于组件的表现层框架出现,比如:Tapestry,Wicket。这些框架隐藏了Servlet API和HTTP协议的细节,能让我们将更多精力投入到组件的重用设计,也让我们可以站在一个更高的抽象层去思考问题,同时也更符合OO,让我们像开发Swing一样去开发WEB项目。可惜的是Tapestry虽然很成熟,但近乎比struts还要烦琐的配置和他的学习难度,都让人望而止步。而wicket推出1.0正式版后(目前最新的版本为1.2),其自带组件已经可以满足一般的项目要求,而很少的配置,都另人眼前一亮。不好意思,好象扯远了。
回到struts,来谈谈它的位置。WEB三层或多层开发已经在人们心中根深蒂固,而我现在仍旧觉着struts的位置非常模糊。我认为它在项目中的工作主要是进行转发,把它放的中间层,显然不太恰当,而放到表现层,也十分牵强。难道在中间层和表现层之间的控制层?其实我一直忽略了struts的标签技术。在项目中,只是一在去考虑struts的扩展、重写,没有太多去使用它的标签库,即使用也只是简单的用了logic、bean、html几个标签。可是当我想整理struts标签的时候,我才发现原来它还有如此多的功能。就拿struts-html.tld来说,一直以为用它和用标准的html没什么区别,但用过一段时间才发现,它能和struts其他组件如此紧密的联系起来,很多要大量代码才能实现的功能,有时一个标签就能解决。
目前正在做项目的国际化,使用struts后也非常轻松的搞定。
有时候觉着没有使用struts标签,几乎没用struts。以前一直对新技术比较感兴趣,Tapestry,Wicket,AJAX,Spring,Ruby on Rail...有时候追最新的技术同时,往往忽略了最基本的应用。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/