关于web编程中的Session
1.session表示会话,不止在javaweb中存在,只要是web开发就存在这种机制。
2.在java中会话对应的类型是:javax.servlet.http.HttpSession简称Session
3.Cookie可以将会话状态保存在客户端,HttpSession可以将会话状态保存在服务器端。
4.HttpSession对象是一个会话级别的对象,一次会话对应一个Session对象,
5.什么是会话?
-“目前”可以理解为:用户打开浏览器,在浏览器上发送多次请求,直到最终关闭浏览器,表示一次
完整的会话。
6.在会话进行过程中,web服务器一直为当前这个用户维护着一个会话对象/httpSession。
7.在WEB容器中,WEB容器维护了大量的HttpSession对象,换句话说,在WEB对象中有一个Session
列表,思考:为什么当前会话中的每一次请求可以获取到属于自己的会话对象?Session的实现原理?
-打开浏览器,在浏览器首次发送请求
-服务器会创建一个HttpSession对象,该对象代表一次会话
-同时生成HttpSession对象对应的Cookie对象,并且Cookie对象的name是JSESSIONID
,Cookie的Value是32位长度的字符串。
-服务器将Cookie的Value和HttpSession对象绑定到Session列表中,
-服务器将Cookie完整发送给浏览器客户端。
-浏览器客户端将Cookie保存到缓存中,
-只要浏览器不关闭,Cookie不会消失
-当再次发送请求的时候,会自动提交缓存中的Cookie
-服务器接收到Cookie,验证该Cookie的name是JSESSIONID,然后获取Cookie的value
-通过Cookie的Value去Session列表中检索对应的
8,浏览器关闭之后,Session对象还存在吗?
-还存在,不会销毁Session对象
-因为B/S架构的系统基于Http协议,而Http协议是无连接,无状态的协议。
-请求的瞬间浏览器和服务器的通道是打开的,请求响应结束之后,通道关闭,这样做的目的是降低
服务器的压力。
9.session对象什么时候被销毁?
-当很长一段时间没用用户再访问该Session对象,此时Session对象超时,web服务器会自动回收
Session对象。
-Session对象的配置:
<session-config>
//两个小时只能没有在访问,不配置默认时间是半个小时。
<session-timeout>120</session-timeout>
</session-config>
10.什么是一次会话?
-一般多数情况下,用户打开浏览器,在浏览器上进行一些操作,然后将浏览器关闭,表示一次会话结束
-本质上的描述:从Session对象的创建,到最终Session对象销毁,这个才是真正意义的一次
完整的会话。
11.httpSession的主要方法:
void setAttribute(String name,Object value);
Object getAttribute(String name);
void removeAttribute(String name);
void invalidate();//销毁session的
12.ServletContext、HttpSession、HttpServletRequest
12.1以上三个接口都是范围对象
-ServletContexnt application ;是应用范围;
-HttpSession session;是会话范围;
-HttpServletRequest request;是请求范围;
12.2. 三个范围的排序:
application>session>request
12.3 application完成跨会话共享数据
session完成跨请求传递数据,但是这些请求必须在同一次会话中;
request完成跨servlet共享数据,但是这些servlet必须在同一次请求当中【转发】
13.使用原则:有小到大尝试,优先使用小范围
例如:登陆成功之后,已经登陆的状态需要保存起来,可以将登陆成功的这个状态保存到session当中
14.HttpServletRequest中的方法:
-HttpSession session=request.getSession(); //获取当前的session,获取不到
则创建session ;
-HttpSession session=request.getSession(true);
-HttpSession session=request.getSession(flase);
//获取当前的session,获取不到 则返回null ;
-HttpSession session=request.getSession(Boolean create);
1.session表示会话,不止在javaweb中存在,只要是web开发就存在这种机制。
2.在java中会话对应的类型是:javax.servlet.http.HttpSession简称Session
3.Cookie可以将会话状态保存在客户端,HttpSession可以将会话状态保存在服务器端。
4.HttpSession对象是一个会话级别的对象,一次会话对应一个Session对象,
5.什么是会话?
-“目前”可以理解为:用户打开浏览器,在浏览器上发送多次请求,直到最终关闭浏览器,表示一次
完整的会话。
6.在会话进行过程中,web服务器一直为当前这个用户维护着一个会话对象/httpSession。
7.在WEB容器中,WEB容器维护了大量的HttpSession对象,换句话说,在WEB对象中有一个Session
列表,思考:为什么当前会话中的每一次请求可以获取到属于自己的会话对象?Session的实现原理?
-打开浏览器,在浏览器首次发送请求
-服务器会创建一个HttpSession对象,该对象代表一次会话
-同时生成HttpSession对象对应的Cookie对象,并且Cookie对象的name是JSESSIONID
,Cookie的Value是32位长度的字符串。
-服务器将Cookie的Value和HttpSession对象绑定到Session列表中,
-服务器将Cookie完整发送给浏览器客户端。
-浏览器客户端将Cookie保存到缓存中,
-只要浏览器不关闭,Cookie不会消失
-当再次发送请求的时候,会自动提交缓存中的Cookie
-服务器接收到Cookie,验证该Cookie的name是JSESSIONID,然后获取Cookie的value
-通过Cookie的Value去Session列表中检索对应的
8,浏览器关闭之后,Session对象还存在吗?
-还存在,不会销毁Session对象
-因为B/S架构的系统基于Http协议,而Http协议是无连接,无状态的协议。
-请求的瞬间浏览器和服务器的通道是打开的,请求响应结束之后,通道关闭,这样做的目的是降低
服务器的压力。
9.session对象什么时候被销毁?
-当很长一段时间没用用户再访问该Session对象,此时Session对象超时,web服务器会自动回收
Session对象。
-Session对象的配置:
<session-config>
//两个小时只能没有在访问,不配置默认时间是半个小时。
<session-timeout>120</session-timeout>
</session-config>
10.什么是一次会话?
-一般多数情况下,用户打开浏览器,在浏览器上进行一些操作,然后将浏览器关闭,表示一次会话结束
-本质上的描述:从Session对象的创建,到最终Session对象销毁,这个才是真正意义的一次
完整的会话。
11.httpSession的主要方法:
void setAttribute(String name,Object value);
Object getAttribute(String name);
void removeAttribute(String name);
void invalidate();//销毁session的
12.ServletContext、HttpSession、HttpServletRequest
12.1以上三个接口都是范围对象
-ServletContexnt application ;是应用范围;
-HttpSession session;是会话范围;
-HttpServletRequest request;是请求范围;
12.2. 三个范围的排序:
application>session>request
12.3 application完成跨会话共享数据
session完成跨请求传递数据,但是这些请求必须在同一次会话中;
request完成跨servlet共享数据,但是这些servlet必须在同一次请求当中【转发】
13.使用原则:有小到大尝试,优先使用小范围
例如:登陆成功之后,已经登陆的状态需要保存起来,可以将登陆成功的这个状态保存到session当中
14.HttpServletRequest中的方法:
-HttpSession session=request.getSession(); //获取当前的session,获取不到
则创建session ;
-HttpSession session=request.getSession(true);
-HttpSession session=request.getSession(flase);
//获取当前的session,获取不到 则返回null ;
-HttpSession session=request.getSession(Boolean create);