请给我一个使用Struts的理由。 (我从项目工程开发经验谈拷过来的)

Struts的优点,大家都可以列一箩筐,如可以通过配制文件定制流程,可以通过FormBean来交验数据,可以通过ActionServlet来把模型和显示分离,等等。我也是看到大家对这个架构的一致好评而想在项目中用一下。可等我花了一个星期来学这个架构后,我却找不到一个能说服我的理由来使用Struts.我们现在的项目是一个电话计费系统。在原来我的开发中,我是一直这样做的。JSP->Servlet->派发。我自己写针对每个需要跳转的JSP都写一个Servlet来控制页面跳转。前台的数据校验我用JavaScript来完成。并且用JavaScript我可以很细的控制Form的提交方式。我的项目需求也不要求改变业务流程。因此我对项目中是否需要使用Struts产生了怀疑。希望得到大家的指点。

在Struts中大量使用标签库。但我觉得JSP的优点就是产生动态页面。产生动态叶面一样要在HTML中加入Java代码。这样不也把HTML和Java代码混杂在一起吗?

如果页面的Form的值域是动态改变的,怎么写ActionForm?Struts好像不提倡用JavaScript,不知是否?

我以前用JSP从来没有用过标签库(尽管它在一定程度上能改善代码的重用性),但我总觉得这是通过一定程度的牺牲JSP的灵活性来换取的。我的一些朋友也和我有同感。

如果这样看来我是不是只用到Struts的可定制页面导航这个功能。对于这样一个大家都极力推崇的MVC框架,我如果仅仅这样使用,一定会被大家大家笑掉大牙。但是我确实很矛盾,就像看着别人送我一顿美味的西餐而不知如何享用,却只能看到大家在那津津乐道。

我们一直用Apache Velocity,比Struts好学。见比较:


在关键应用(如金融)光用JavaScript验证数据是不够的,别人可以写恶意程序
绕过JavaScript直接向你的Server送恶意数据。

Sorry, link is
http://jakarta.apache.org/velocity/ymtd/ymtd.html

> 我们一直用Apache Velocity,比Struts好学。见比较:
>
> [url=http://jakarta.apache.org/velocity/ymtd/ymtd.html
> [/url]
> 在关键应用(如金融)光用JavaScript验证数据是不够的,别
> 丝梢孕炊褚獬绦?> 绕过JavaScript直接向你的Server送恶意数据。

没那么复杂,在IE的options中就可以禁用js。

我原来用struts,现在改tapestry了:-)

我感觉Struts就是通过提升复杂性和降低灵活性来换取更好的系统架构,用不用自己根据项目特征来考虑吧,不需要跟风。

同样的系统框架到不同的人手里效果都不同,很多人用struct也未必比单纯jsp+bean的来得清晰和规范。

我喜欢:SIMPLE IS THE BEST

感谢jpenggin和raynix的意见,关于JavaScript确实存在上述问题。但是JavaScript功能比较强大,可以做出比较丰富的Web UI和数据交验(配合正则表达式).如果仅从安全角度考虑而否定JavaScript好像理由不太充分。

> 感谢jpenggin和raynix的意见,关于JavaScript确实存在上述
> 侍狻5JavaScript功能比较强大,可以做出比较丰富的Web
> UI和数据交验(配合正则表达式).如果仅从安全角度考虑而?
> 定JavaScript好像理由不太充分。

我不是否定JAVASCRIPT,我是指除了JAVASCRIPT中验证数据的合法性外,JSP或SERVER端也要
验证.否则黑客可以用JAVA或PERL等写一个程序冒充IE等WEB BROWSER想你的WEB APP发非法数据.
如一次1000000元的存款.

简单来说,javascript校验只是防君子不防小人的东西,要做强壮的B/S系统就一定要两边都进行校验。

我一直用Webwork,而且足够用(有时我对源码做少量修改)。我不觉得Struts有多好用!

如果说Struts的最大优点是实现MVC模式,你可能觉得还是很空洞,我实际地说,Struts最大优点是将以前界面开发无法对象化的过程变成了面向对象的过程。

ActionForm是Html表单的一个对象映射,以后所有的操作和功能都和ActionForm这个对象实现交互操作了。

Struts是直接和Html打交道,Javascript也是和Html打交道,因此Struts和Javascript并无任何直接联系。

因为,这三者需要在一个JSP中实现,好像扯上了关系,其实他们的运行顺序是Struts-->ActionForm-->Html--->Javascript。
这个概念不能混淆,各有各的定位。