精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-05-18
struts表示层jsp所需要的数据,在哪个位置获得比较合理? struts官方的例子中都是在action中setAttribute,然后页面自然也用它提供的 taglib来显示,但是这样会遇到两个问题: 1,当诸多action将forward到同一个页面的时候,都将重复的大量的代码来, 很多action中都会出现相同的setAttribute语句。 -这个问题可以忍受的,通过提取公因数,合并action,来改善。但是有迁就struts之嫌。 2,第二个问题,当我需要的forward的页面,需要setRedirect(true)的时 候,那么request的attriute中的属性将清空,导致被迫在jsp中获取要显示的数据。--有很多时候需要redirect为true的,诸如forward的页面从缓存获取,不刷新之类,等等一系列的情况下。 -这样做直接导致了,struts的taglib成为鸡肋,如果在jsp页面中获得后,setAttribute然后,以便于taglib去getAttribute,真是过于多此一举。 请问各位,如何处理这样的问题? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-05-18
第二种可以考虑将数据放在session中
|
|
返回顶楼 | |
发表时间:2004-05-19
--如果使用session,那么面临着使用完后session清空的问题。
作为一种普遍问题的解决方法,当用户量增多的时候,ssession会变得非常大,这又是令人不快的。 |
|
返回顶楼 | |
发表时间:2004-05-19
我觉得session是可行的办法。tapestry应该就是把组件保存在session吧, 可以学习struts的actionform,增加一个reset方法
|
|
返回顶楼 | |
发表时间:2004-05-19
冰云 写道 我觉得session是可行的办法。tapestry应该就是把组件保存在session吧, 可以学习struts的actionform,增加一个reset方法
我倾向于在页面获得页面所需显示的数据,而非在action中setAttribute。 随之也抛弃部分struts的taglib。 如果放在session中,那么如何管理session中那些仅仅是只是某些页面,某些 scope才用到的compoent对象,有什么比较好的方法来管理他们吗? 能确报运行一段时间,session中不存在一些垃圾对象吗? 当异常发生的时候,reset的管理能力也是很有限的。 如果在页面获得数据,那么这些问题都将不存在,但是却违背了struts的初衷。 |
|
返回顶楼 | |
发表时间:2004-05-19
jbaggio 写道 我倾向于在页面获得页面所需显示的数据,而非在action中setAttribute。 随之也抛弃部分struts的taglib。 这个我现在是自己写taglib调用service来获得数据 效果还不错 jbaggio 写道 如果放在session中,那么如何管理session中那些仅仅是只是某些页面,某些 scope才用到的compoent对象,有什么比较好的方法来管理他们吗? 能确报运行一段时间,session中不存在一些垃圾对象吗? 当异常发生的时候,reset的管理能力也是很有限的。 session能存在多少垃圾对象呢? 如果每次都用同样的key,那么上次的key就被抛弃了吧 我想,在session被destory的时候这些对象就都可以被回收了 感觉应该不是大问题 |
|
返回顶楼 | |
发表时间:2004-05-19
嗯,谢谢:)
我会试一下。 |
|
返回顶楼 | |
发表时间:2004-05-19
jbaggio 写道 嗯,谢谢:)
我会试一下。 跟我客气什么!~~ |
|
返回顶楼 | |
发表时间:2004-05-20
冰云 写道 jbaggio 写道 嗯,谢谢:)
我会试一下。 跟我客气什么!~~ 好! 那就冰大侠,大恩不言谢。 后会有期:) |
|
返回顶楼 | |
发表时间:2004-05-21
反正我的感觉是能不使用session就不使用,不是必须就不要用它,规范中是这么要求的,难道你不要考虑大访问量时服务器的负担么?
不过想想,struts中jsp中能使用的无非就时request ,session,servletcontext级,而request.settattribute()也是struts中建议使用最常规方式,我想还是别白费心思了 |
|
返回顶楼 | |