使用Struts开发Web应用常见的一些问题汇总

        使用Java开发WEB应用,Struts框架是一个不错的选择。下面记录实际开发过程中产生的一些问题,望能敦促我自己去查清原因,或是留给以后开发时一个警示。希冀不再重复类似的错误。

        页面使用Stuts HTML标签的问题:

        使用Stuts HTML标签的愿望就是能够让标签把实体对象和页面元素影射起来,减少手动Set的工作量,并能够自动回填数据。但实践的结果告诉我效果很差。如果你当前页面Form实体A,里面包含了另外一个实体对象B,那么在初始化A时必须也要初始化B。在A被Struts初始化时,是不会自动初始化B的,所以页面要是包含B的类型属性,就会报错。所以需要在A实体内给B实力化,这种无谓的操作可能会造成其他的问题。比如实体B又作为实体B自己的父亲的时候,这就是一个恐怖的无限制的对象生成。另外一个问题就是校验的问题,使用Struts的朋友一般都会使用Validator框架作校验,但是非字符串类型的数据是校验不出来的。这样就迫使页面中的数据域对象都是字符串。这和最初的愿望是冲突的。既然Struts HTML标签已经失去了最初捆绑数据的意义,那么还有理由再使用该标签吗?我认为可以选用JSTL和普通HTML语言替换Struts的HTML标签。这还有另外一种想法,就是Stuts HTML标签不能被页面编辑器解析,不方便美工设计调整页面。再来说说HTML 标签的回填功能,JSTL同样可以完成回填的功能,并且更为出色,更具通用性。如果不是同一个form名字的数据,使用struts标签是时不能回填的。这迫使我彻底对Struts标签失望,决定不在往后的项目中使用。

        Validator校验的问题:

        如上所述,如果想使用Validator框架,那么Form里面所有的数据类型最好是String型的。否则非String类型校验不出来。另外一个就是校验失败后的页面转向问题。就是Struts-config.xml中Action配置的input项。一些开发人员往往把inpu又转到自己当前的Action上,这样就会产生死循环。还有一种就是转向的页面的数据初始化问题。为了逻辑上的清晰,我们一般使用一个initData的Action来完成页面数据的初始化,如果校验出错,就转到该初始化action上。当然这需要辨别是校验失败后转发到initData上来的,页面上的数据不能从数据库中再去获取,以免覆盖客户的数据。还有一种问题就是校验失败回来后,页面上客户输入域的数据一律看作字符串类型处理,因为这些数据是客户输入的,程序无法规避。

         数据类型的问题,这部分不能算到Struts的账上,自是顺别记录:

         数据类型的问题除了上面说到的需要注意外,就是Double和Float类型,这些数据类型单独使用没有什么问题,但是两个数据如果需要进行算术运算,那么可能会出现浮点数。最好使用BigDecimal替换。还有就是一个Date的数据类型,该数据类型显示上存在一些问题,没有按照年月日出现,最好使用sql.Date。

         编写Action或是Service或是DAO的时候,如果使用的是Spring的架构,那么注意线程的安全问题,一定不能在一个类里面存在

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值