日期:2014-05-20  浏览次数:21041 次

session内存占用的问题
各位大神,小弟最近在学这个JSP+SERVLET。发现呢,这个session占用内存的问题。比方说,我有一个对象User,包括了属性ID,username,password,address,sex,age...等。我是将id放到session中,以后页面用到User的时候查询数据库好呢?还是直接将得到的User放到seesion,以后seesion.getAttribute()好呢?这样就不用查询数据库了

------解决方案--------------------
既然用到了session为嘛不直接从session里面取呢,这能耗费多少资源
------解决方案--------------------
应该是对象
------解决方案--------------------
其实Session就类似一个Map类型,主键就是你的sessionId,键值就是你存放的数据(你可以将这个也理解成一个Map,嵌套在上一个Map里的)。Session的失效期可以在web.xml中设置。楼主说的两种方式,都是可以的。根据不同的环境,各有优缺点。如果将数据都放在Session中,则在一定程度上消耗了内存空间,可是效率较高,也方便使用。如果采用使用userId去从数据库中去取的话,可能节约了内存。但是每次从库中取也很消耗资源,而且操作也不方便。如果你的程序针对每次操作都要校验权限等的话,我建议你将User直接都放在Session里。毕竟Session过期后会自动清除相关空间。希望说的能帮上楼主。继续交流。
------解决方案--------------------
如果出于性能考虑,尽量避免使用session,用request吧
------解决方案--------------------
放在session中的信息必须是在多个页面经常用到的,应该是出于这样的出发点来考虑的,刚才你问的 是放一个对象的 其实放对象比放某个属性要好 这样就利用了封装的特点 不然的话又何必专门把User拿来弄一个类呢 你要明白session是服务器端的 而request是客户端的 但是request的范围只存在于两个之间传递才行 在多个页面无法取到 除非连续传递
------解决方案--------------------
几百几千没什么问题的。一些属性能占多少资源?