关于request和session中的setAttribute
1,request.setAttribute(“curruser”, curruser)这个方法是将curruser这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。如果这你都不会的话,那么你可以在jsp页面编写java小脚本来获取:<% User myuser = (User)request.getAttribute("curruser")%>,在jsp页面显示值:<%=myuser.getName()%>。
2,session.setAttribute("curruser", curruser)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。
关于两者的作用域:
request的生命周期是request请求域,一个请求结束,则request结束
session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制后,session注销而失效
或是人为使用session.invalidate();使用session失效;
或是关闭浏览器后,session还存在,但是这里已经无法获取session了,过一会它还是失效[color=darkred][/color]
什么时侯用Request,何时用session呢?
当你的数据只需要在下一个forward有用时,用request就够了,(当然,如果可以用Form来传就更合理了),如果你的数据不只是在下一个forward有用时,就用session吧
比较Request、Session、ServletContext三者的生存时间
Request的生存时间是一次请求与响应期间。
Session是多次请求与响应之间。
ServletContext是一直存在,除非关闭服务器、或者
卸载了该应用