session是在service处理还是在controller处理

如题,session在那一层处理比较好。举登录为例子,当用户登录成功时,将用户信息保存在session中,考虑到这个动作也属于业务逻辑的一部分,把它放在service层操作,没问题。登录完后进入首页,想获取用户的信息,这个时候问题来了,是在controller层直接操作session还是写个service来专门处理session(除了session操作,不需要其他的动作了)。
对于controller,我一直觉得它起的是中转的作用,请求来了,经过controller的中转调用service,service处理完了,controller将结果发给界面。如果在controller层操作session,总感觉不对劲。
同事的观点是,controller是数据准备的作用,准备数据给service,准备数据给view。按照这个想法,在controller层处理session感觉合情合理。
所以,想问问各位大神,controller的定位是怎样的?

5个回答

controller最好不处理业务逻辑,session无所谓在哪里都可以,毕竟如果用了shiro框架之后我就没见过session了哈哈

这个保存到session中的动作,就像你举例那样,假如是登录,登录成功之后就把用户信息储存在session里面,那你直接把这个保存到session里面的动作写到用户登录验证通过那点就好了啊,何必纠结那么多

u012890095
Nathan-Yang 你说的保存的这个过程我不纠结,我比较纠结一些只需要拿取session的动作是在controller做还是写个service做
3 年多之前 回复

放在controller层比较方便使用,举个简单例子,比如你用一些框架例如struts2,在使用的时候会在控制层实现sessionAwa...接口,直接使用session,
说明放在控制层是合理的

u012890095
Nathan-Yang 确实,在一些框架,比如jfinal,他在父类控制器里面包装了一些对session的操作,从这个方面看,确实是认可了在controller层操作session的行为
3 年多之前 回复

mvc只是一种设计模式,必要太过于纠结到底谁谁谁一定放哪里

如果一定要分的清清楚楚,那么我问你servlet到底属于c还是view?这个本就没有太过严格的划分,如果一定要分的清清楚楚,那就不要用mvc的设计模式了,可以用mvp或者mvvm,不过现在项目用这两种的很少,

u012890095
Nathan-Yang 受教了,谢谢!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐