session内存占用的问题 各位大神,小弟最近在学这个JSP+SERVLET。发现呢,这个session占用内存的问题。比方说,我有一个对象User,包括了属性ID,username,password,address,sex,age...等。我是将id放到session中,以后页面用到User的时候查询数据库好呢?还是直接将得到的User放到seesion,以后seesion.getAttribute()好呢?这样就不用查询数据库了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然用到了session为嘛不直接从session里面取呢,这能耗费多少资源 其实我想问,存放User的时候,session是存的什么东西?是User这个引用,还是User的所有属性 其实Session就类似一个Map类型,主键就是你的sessionId,键值就是你存放的数据(你可以将这个也理解成一个Map,嵌套在上一个Map里的)。Session的失效期可以在web.xml中设置。楼主说的两种方式,都是可以的。根据不同的环境,各有优缺点。如果将数据都放在Session中,则在一定程度上消耗了内存空间,可是效率较高,也方便使用。如果采用使用userId去从数据库中去取的话,可能节约了内存。但是每次从库中取也很消耗资源,而且操作也不方便。如果你的程序针对每次操作都要校验权限等的话,我建议你将User直接都放在Session里。毕竟Session过期后会自动清除相关空间。希望说的能帮上楼主。继续交流。 因为我的User中的属性有很多,如果有200个用户去访问的话,我担心会崩溃 如果出于性能考虑,尽量避免使用session,用request吧 怎么样单独销毁某一个session么? 放在session中的信息必须是在多个页面经常用到的,应该是出于这样的出发点来考虑的,刚才你问的 是放一个对象的 其实放对象比放某个属性要好 这样就利用了封装的特点 不然的话又何必专门把User拿来弄一个类呢 你要明白session是服务器端的 而request是客户端的 但是request的范围只存在于两个之间传递才行 在多个页面无法取到 除非连续传递 hibernate中一对多时候如何进行分页获取集合对象? 请教个XML小问题 webwork中怎么在interceptor中得到正运行的action 的名字??? 一个关于EJB的问题 怎么跟踪在服务器端的执行啊? 我的JavaMail的程序发送信件时遇到555 Syntax错误,请问为什么 请问我用setAttribute()函数添加属性为什么 哪里有pet store的结构说明? 在一个j2ee系统中如何防止内存泄漏 spring4.1.1+hibernate4.3.6问题 spring注解切面不起作用 hibernate如何打印所执行的【原版SQL】语句?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货