最近学习基于注解的spring mvc,看了petclinic示例程序,发现它通过model.addAttribute("example", example)和@SessionAttributes("example")将表单对象保存在session中,然后通过@ModelAttribute("example")将表单对象保存在模型中。那么在整个会话期间example将一直保存在session中,如果需要处理的表单非常多的话,那么session中将保存很多表单对象,这样会不会造成性能问题?
我刚开始学习spring,有很多东西不是很了解,请各位不吝赐教,不要见笑,谢谢!
1、看机器内存有多大,越大那session中当然可以保存更多的东西,保存在内存中的数据存、取速度是最快的,该不该保存在session中要根据实际需要而定
2、一般session中会保存已登录用户的相关信息、一些常用到的基础数据、需要在多个页面或多个模块中传递/公用到的数据等
3、我觉得这应该是一个根据实际业务需要,放在session中合不合理的问题。
像很多网站购物车一般就使用内存保存,保存当前用户购买的东西,等用户挑完后一起结帐,像这种其实只要保存用户的ID、产品ID、数量、价钱等少数属性,占不了多少内存,再多的用户也不怕,用户量真的很大的话,服务器、内存肯定会增加,会有各种各样的集群等处理方案
其实不管你的机器或者服务器的内存有多大 这个都关键在于你开发的项目而论。
Session是在服务器端保存着的,以文件或者数据库的形式。当网站的流量小时,在性能上没有太大的差别。但是,当一个网站的用户量非常大时,每个用户访问网站都会在服务器端产生一个Session对象,这需要耗费服务器的很多资源,导致服务器的性能很低。那如果非常大的访问量的话,只能是对数据和项目做优化了。而有的时候并非都是用session的。
一般情况session 都是用于保存用户数据信息,很少量的,只是记录每个用户自己的状态。
1.SimpleFormController将表单处理 工作流程编制到控制器中,说白了它就干这个的。
2.你可以直接在配置文件中通过commandClass属性进行设 置:
1、取决于你的机器的性能,如果你的机器性能相当的高,是不会造成什么影响的。
2、取决于你使用的框架中的session是否被软件服务器很好的管理,有些软件服务器可以有效地管理会话问题。比如在jboss服务器上使用seam框架,seam框架中,几乎每一个action,每一个实体类(EJB),甚至每一个java类都是存在于整个session期的,但是seam和jboss具有很好的管理和回收能力。