request对象
request对象内数据的存活范围就是在request对象的存活范围内。
当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;
之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。
session对象
session对象内数据的存活范围也就是session对象的存活范围(只要浏览器不关闭,session对象就会一直存在),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。
request与session作用域
-
session.setAttribute()和session.getAttribute()配对使用,作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。
-
request.setAttribute()和request.getAttribute()配对使用,作用域是请求和被请求页面之间。
-
request.setAttribute(“user”, user) 这个方法是将userr这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。
-
request.setAttribute()是只在此action的下一个forward需要使用的时候使用;request.getAttribute()表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型。
-
session.setAttribute(“user”, user)
这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。