小弟是才进入java开发领域的。用的是struts1.1,项目比较老了。JDK1.4,Hibernate3.0。之前做需求时遇到个问题,我一直没搞懂导致开发效率很低。我举例说明吧。就那User举例。比如说有...
小弟是才进入java开发领域的。用的是struts1.1,项目比较老了。JDK1.4,Hibernate3.0。
之前做需求时遇到个问题,我一直没搞懂 导致开发效率很低。我举例说明吧。
就那User举例。比如说有个UserAction,UserJsp.
UserAction中的 "Init方法" 中已经把一个属性"name"放到了Request范围,然后跳到UserJsp页面。这样的话在页面不管我是用struts标签还是EL表达式都可以把这个值取到。现在在UserJsp页面,还有一些按钮或者连接之类的。有的仍是提交到UserAction,而有的是已经跳到了其它的Action,但返回来之后仍然回到UserJsp这个页面。
现在我的疑问:
比如说第一种,仍然提交到UserAction,但是方法已经改变了(不是进入到之前的init方法中,换成了query方法),提交之后依然返回UserJsp这个页面。请问返回来之后,我最开始设置的那个"name"属性,在这个页面还可以取到吗?我听同事说,只要提交到同一个Action(ActionForm),这个值都是一直带着的,随时都可以取到。请问是这样吗?
再说第二种,在UserJsp页面的一个连接指向了另一个Action,这次再返回到UserJsp时,我的"name"属性就不存在了,对嘛?
还有第三种种情况,我看别人在写“服务层(有的叫Service,或这Handler,Business之类的)”,会从Action中穿一个ActionForm过来,而如果是我写的话,我会看服务层中用到哪些参数,我就会从Action传哪些参数进来,开始我以为人家把整个ActionForm传过来,是为了省事,不用再去把一个个的参数写进来。后来我体会到,这是不是应该和我上边的两种提问有关呢?因为人家向服务层传递一个ActionForm,当业务逻辑都弄好之后,就直接把值还放到了ActionForm中,然后再向页面传递的时候直接用这个ActionForm就可以了。这是不是就应了上边的那种“只要我的Actionform不变,值就一直有效”?
谢谢牛人们回答了 真的很感谢你们。
展开