关于请求的提交方式
保存会话数据的两种技术
- Cookie:客户端技术
程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据。这样,web资源处理的就是用户各自的数据了。 HttpSession:服务器技术
利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。seesion的核心思想:在服务器端存储用户的会话数据,放在浏览器独享的空间中
- session中的确为每一个浏览器开辟了独享的空间,并且给每一片独享空间分配了一个唯一标识,浏览器中也存有这片独享的空间对应的服务器上的唯一标识。
- session是一个域对象
- 在web开发中,服务器可以为每个用户浏览器创建一个会话对象(sessionduixiang ),服务端把用户数据写到用户浏览器独占的session中,当前用户使一个浏览器独占一个session对象时(默认情况下)。因此,在需要保存用户数据时,伏虎器程序可以用session保存。同一浏览器可以从用户的session中取出该用户的数据,为用户服务。
- 数据保存在服务器的session对象中,内存和浏览器怎么拿到JsessionID呢?
- session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象
- 跟cookie一样从request报文中拿到session数据?
- 并不是,而是通过报文里的JsessionID去服务器内存里查找。
- Session和cookie的主要区别在于
Cookie是把用户的数据写给用户的浏览器(在浏览器里边保存)
Session Demo
- 使用Session完成简单的购物功能
-
- 首页 显示所有商品列表
-
- 每个商品可以查看商品详情
-
- 在商品详情页可以把商品加入到购物车
-
- 可以查看购物车里面有多少个商品了
1、访问动态生成的首页
2、点击首页中所列出的商品的超链接,查看商品详情(超链接携带商品id参数)
3、在商品详情页面点击加入购物车这个超链接,跳转到专门处理加入购物车这个工作的servlet
4、该servlet从session取出之前的购物列表信息,把新添加到购物车的商品,添加到session的购物列表中
5、点击查看购物车,来查看购物车中当前的所有商品
代码实在太多,这里放不下。
session的生命周期
- session何时死亡呢?
- 让tomcat,在服务器重启或者重新部署web应用的时候能够将我们的session保存,其实是将session对象做了序列化,在tomcat重启的时候做了反序列化。
- 让我们在session中存储的购物列表中的商品的bean类实现Serializable接口
public class Product implements java.io.Serializable - 应用的反序列化:
进入tomcat服务器后台,找到当前应用
并点击stop,然后去用户文件夹-。inteljIdea2017.3-system-tomcat-haha-sessions-haha中找到Sessions.ser - 同时,当内存紧张时,tomcat将用户不经常使用的session对象序列化;
session死亡条件
- 我们的tomcat默认的是session无任何客户端使用超过30分钟(空闲),那么就会死亡。
- 可以在tomcat的/conf/web.xml中配置
- 同时通过代码使session死亡
禁用cookie后的请求报文
那么我们需要把JsessionID保存在url中