第二十五天 Java基础学习(十九)

本文详细介绍了Java中的HttpSession和ServletContext对象。HttpSession主要用于在服务器端存储用户会话数据,解决了HTTP无状态的问题。文章阐述了Session的创建、使用、销毁过程及其与Cookie的关系。而ServletContext对象在Web项目中全局唯一,用于实现不同用户间的数据共享。此外,还讲解了Servlet中的域对象、监听器和过滤器的概念,以及JSP的执行流程和常用指令标签。
摘要由CSDN通过智能技术生成

一、HttpSession对象

Session和Cookie是HTTP协议无状态的两种解决方案

•Cookie将数据保存在客户端:

①服务端创建Cookie,将Cookie添加到响应对象中

②响应回到浏览器,浏览器会自动存储Cookie中的数据

③浏览器再发起请求时自动带着Cookie中的数据

•Session将数据保存在服务器端

●特点

•Session技术解决用户发送不同请求时数据共享的问题

•一个浏览器在服务器中只会创建一个Session对象。不同用户的Session对象之间是互相独立的

•服务器中创建Session对象,创建完成后会将Session对象的Id(JSESSIONID)以Cookie的形式保存在客户端(浏览器),用户再次发请求时,会携带该Cookie,也就是JSESSIONID到服务器,服务器会根据该id找到用户的Session对象

•用户JSESSIONID的Cookie丢失或者服务器中存储的Session对象被销毁,服务器接收到用户的请求后,如果找不到对应的Session对象,会重新创建,并将新的JSESSIONID以Cookie的形式保存到浏览器中

•存储SESSIONID的Cookie不需要手动创建,Session对象创建完成,Tomcat服务器会自动创建Cookie,将JESSIONID存储在Cookie中响应回浏览器。

•Cookie默认的有效期为一次会话(浏览器不能关闭),浏览器关闭,Cookie即失效

•Session对象在Tomcat服务器的默认有效期为30分钟

•注意:

     不要访问jsp(默认访问index.jsp),jsp会自动创建Session对象

       关闭自动访问jsp

      Servlet不会自动创建Session对象,需要使用Session对象,必须手动获取。

●Session的使用

•HttpSession的创建

Httpsession session = req.getsession();

•特点:

①如果请求的Cookie中携带了JSESSIONID,则根据JSESSIONID找对应的Session对象

     找到,返回该Session

     没有找到,创建新的Session对象,会将JSESSIONID存储在Cookie中响应回浏览器

•如果请求中没有携带JSESSIONID,则会创建一个Session对象,会将JSESSIONID存储在Cookie中响应回浏览器

•服务器中能找到对应的Session对象,那就使用该Session对象,如果找不到,就会新创建。

•HttpSession存储数据

session.setAttribute("user", user);

•HttpSession获取数据

session.getAttribute("user");

• HttpSession的销毁方式

HttpSession的销毁方式有两种:

①达到超时时间后会销毁,默认30分钟,时间的计算方式是根据最后一次请求时间作为起始时间开始计算

    Tomcat服务器的conf/web.xml文件中配置HttpSession的超时时间。这个文件是所有项目web.xml的父文件,不建议修改web.xml

②调用HttpSession对象中的invalidate()方法销毁

 

•客户端关闭浏览器后,再次打开浏览器并发起请求,由于存储JSESSIONID的Cookie会销毁,服务器会重新创建Session对象。服务器端的旧的Session对象还在,存储的数据也在,过了超时时间后,就销毁了

●HttpSession对象总结

•Session和Cookie的区别:

① Cookie数据存储在客户端,而HttpSession中的数据存储在服务器

② Cookie不安全,而HttpSession是安全的 

③单个cookie保存的数据不能超过4KB,很多浏览器都限制一个域名保存cookie的数量

   HttpSession没有容量以及数量的限制,随着Session中存储的内容增多,会比较占用服务器内存,Session不存放业务数据

④ Cookie的数据都以字符串的形式保存。Session中可以保存对象

•Session和Cookie的关系:Session依赖于Cookie

二、ServletContext对象

•ServletContext对象,在一个web项目中只创建一次,所有用户都可以获取及使用,可以实现不同用户请求的数据共享

•获取ServletContext对象,在JSP中也叫Application对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值