四大域对象:
page request session application
1.page:page是指当前页面,只对当前jsp页面有效
:page里面的变量没法从index.jsp传递到test.jsp,只要页面跳转了,它们就不见了
2.request:是指从http请求到服务器处理结束,返回响应的整个过程,在这个过程中使用forward方式跳转多个jsp,在这些页面里你都可以使用这个变量.
:request里的变量可以跨越forward的前后两页,但是只要重新刷新页面,就开始重新计算
3.session:有效范围当前会话,从浏览器的打开到浏览器的关闭
:session和application里的变量一直在累加,但是只要浏览器关闭,session对象就不见了
(1)设置session会话
HttpSession session=request.getSession()
session.setAttribute("user",ub);
(2)设置与上一次最长交互时间间隔 单位是秒
session.setMaxInactiveInterval(10)
(3)使session失效
session.invalidate()
4.application:它的有效范围是整个应用
作用域里的变量,它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用
:application里的变量一直在累加,除非重启tomcat,否则一直变大,作用域规定的是变量的有效期限
Session和Cookie
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Cookie的默认生命周期是一次会话 Cookie中有JSESSIONID
Session.getId()==cookie的JSESSIONID
只有创建Session的时候(request。getSession)时才有JSESSION,然后才将JSESSIONID存到Cookie中
cookie信息放到请求头
服务端要JSESSIONID干什么?
请求携带cookie的JSESSIONID到服务端,服务端session可以通过getId获取到JSESSIONID
与Cookie中的JSESSIONID一比较,就可以将请求和session对应上。