免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2635 | 回复: 11
打印 上一主题 下一主题

关于Spring+Struts+Hibernate的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-20 09:11 |只看该作者 |倒序浏览
不是所有的页面数据都是通过控制器获取并转发的,有些页面比如index.jsp要直接访问DAO获取数据。
在这种情况下是否只能在页面上傻乎乎地直接new一个ApplicationContext,然后再getBean获取DAO?有没有其他的更Spring一些的办法?

论坛徽章:
0
2 [报告]
发表于 2006-06-20 09:40 |只看该作者
如果你用struts的 可以重写 process类具体名字我忘记了 然后在自己的实现中用spring的autowire类  把spring中的bean注入到 action中 不用傻傻的去getbean
细节我记不清楚了 给你个思路
如果不通过转发的 你可以用servicelocator 方式取bean applicationcontext应该是个单例的

[ 本帖最后由 tong0245 于 2006-6-20 09:43 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-06-20 14:11 |只看该作者

问题基本解决

ServiceLocator只是将生成ApplicationContext和getBean等方法封装起来而已阿!

论坛徽章:
0
4 [报告]
发表于 2006-06-20 14:41 |只看该作者
原帖由 comliu 于 2006-6-20 14:11 发表
ServiceLocator只是将生成ApplicationContext和getBean等方法封装起来而已阿!

可是起码你不用“在这种情况下是否只能在页面上傻乎乎地直接new一个ApplicationContext,然后再getBean获取DAO?有没有其他的更Spring一些的办法?”
n你每个页面都new吗????????

论坛徽章:
0
5 [报告]
发表于 2006-06-20 14:57 |只看该作者
jsp似乎没法子用spring管理注入,如果你遵守mvc的守则,把业务逻辑都写进bean里,而不是在jsp中处理,那就不需要在jsp里获取applicationContext了。
我个人的建议是不要在jsp里写任何逻辑。

论坛徽章:
0
6 [报告]
发表于 2006-06-20 17:14 |只看该作者
原帖由 xyz20003 于 2006-6-20 14:57 发表
jsp似乎没法子用spring管理注入,如果你遵守mvc的守则,把业务逻辑都写进bean里,而不是在jsp中处理,那就不需要在jsp里获取applicationContext了。
我个人的建议是不要在jsp里写任何逻辑。


不知道您所说的“逻辑是指什么”。
我的意思是,比如我需要在页面上显示一个班学生的列表,
我把这个业务逻辑在DAO对象里写成一个getStudentsByClassId()方法,
像这种情况,就可以直接让jsp调用getStudentsByClassId()直接获取数据,
而没有必要由控制器调用getStudentsByClassId(),然后setAttribute,然后转发。
但是现在由于Spring的引入,DAO对象在使用之前需要注入SessionFactory,并且要使用事务代理,所以
不能直接访问DAO对象,而要通过ApplicationContext加工一下。
我相信从页面直接访问DAO对象是必要的。tong0245的ServiceLocator是可行的。作为一个刚接触Spring
的人,我要感谢tong0245对我的帮助。

论坛徽章:
0
7 [报告]
发表于 2006-06-20 18:13 |只看该作者
恕我直言,lz暂时还不太适合整合这么一堆框架。
就问题而言,实际上从index.jsp到dao,从清晰角度说至少应该有这么几层:

login.jsp(index.jsp访问dao实在有些不知所谓)-->loginAction(这里应该是spring bean注入点)-->loginService-->userDao

spring可以非常优美的进行事务处理,我想这是考虑结合spring的最大初衷,至少对我来讲。而并非要如何如何才能“更spring”,更前卫。

论坛徽章:
0
8 [报告]
发表于 2006-06-21 08:37 |只看该作者
原帖由 comliu 于 2006-6-20 17:14 发表


不知道您所说的“逻辑是指什么”。
我的意思是,比如我需要在页面上显示一个班学生的列表,
我把这个业务逻辑在DAO对象里写成一个getStudentsByClassId()方法,
像这种情况,就可以直接让jsp调用getStuden ...


我对mvc的理解是,jsp属于view,只负责显示。意思就是说,jsp里除了从HttpServletRequest里getAttribute外,就只有out.print这样的操作了。所有对dao的操作都放在struts的Action里。这样虽然会比较麻烦,但分层会让人感觉舒服很多。

尽量不要在jsp里写java代码,也是规则之一。

论坛徽章:
0
9 [报告]
发表于 2006-06-21 13:27 |只看该作者
原帖由 xyz20003 于 2006-6-21 08:37 发表


我对mvc的理解是,jsp属于view,只负责显示。意思就是说,jsp里除了从HttpServletRequest里getAttribute外,就只有out.print这样的操作了。所有对dao的操作都放在struts的Action里。这样虽然会比较麻烦,但分 ...


http://bbs.qianlong.com/main.jsp?url=%2Fforum1%2Ffrontshow%2F
千龙BBS主要就是页面直接访问DAO,包括分页操作。

拿数据库设计打比方,如果完全按照范式设计,则在应用时可能出现过度的连接查询,如果在遵循范式的基础上有选择地逆规范化,则可以提高效率。
MVC与此同理,过分严格地遵循MVC,也会造成效率的下降。有些页面,比如论坛首页,完全定死了的,就是查数据库里的那个表,就是查那么多行,什么时候都是这套规则,这时再搬出一个控制器来多废道手就多余了。
MVC是很好,应当遵循,但也要灵活掌握,这就是我的想法.

论坛徽章:
0
10 [报告]
发表于 2006-06-21 16:50 |只看该作者
原帖由 comliu 于 2006-6-21 13:27 发表


http://bbs.qianlong.com/main.jsp?url=%2Fforum1%2Ffrontshow%2F
千龙BBS主要就是页面直接访问DAO,包括分页操作。

拿数据库设计打比方,如果完全按照范式设计,则在应用时可能出现过度的连接 ...




哦,如果非要在jsp里写业务逻辑代码的话,你怎么用spring托管这些jsp呢?不能用spring管理jsp,也就不能使用依赖注射啦。。。不遵守规则获得灵活性,估计就要丧失另外一些应用的便利了。

要不咱们取一个折中的办法,写个servlet或listener,在里边获取applicationContext放进ServletContext里,jsp直接从ServletContext拿这个applicationContext?因为我不知道如何让spring注入东西,期待其他同志的建议。

[ 本帖最后由 xyz20003 于 2006-6-21 16:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP