HttpSession的创建及使用

这篇具有很好参考价值的文章主要介绍了HttpSession的创建及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.HttpSession对象的特点

HttpSession保存在服务器

HttpSession使用Key与Value结构存储数据

HttpSession的Key是字符串类型,Value则是Object类型

HttpSession存储数据大小无限制

2.HttpSession对象的创建

    HttpSession对象的创建是通过request.getSession()方法来创建的,客户端浏览器在请求服务端资源时,如果在请求中没有jsessionid,getSession()方法将会为这个客户端浏览器创建一个新的HttpSession对象,并为这个HttpSession对象生成一个jsessionid,在响应中通过状态Cookie写回给客户端浏览器,如果在请求中包含类jsessionid,getSession()方法则根据这个ID返回与这个客户端浏览器对应的HttpSession对象。

    getSession()方法还有一个重载方法getSession(true|false).当参数为true时与getSession()方法作用相同。当参数为false时,则只去根据jsessionid查找是否有与这个客户端浏览器对应的HttpSession,如果有则返回,如果没有jsessionid则不会创建新的HttpSession对象。

3.HttpSession的使用

将数据存储到HttpSession对象中

session.setAttribute("key",value)

根据key获取HttpSession中的数据,返回Object

Object value = session.getAttribute("key")

获取HttpSession中所有的key,返回枚举类型

Enumeration<String> attributeNames = session.getAttributeNames()

根据key删除HttpSession中的数据

session.removeAttribute("key")

根据获取当前HttpSession的SessionID,返回字符串类型

String id = session.getId()

4.HttpSession的销毁方式

    HttpSession的销毁方式有两种:

  • 通过web.xml文件指定超时时间
  • 通过HttpSession对象中invalidate()方法销毁当前HttpSession对象

    我们可以在web.xml文件中指定HttpSession的超时时间,当到达指定的超时时间后,容器就会销毁该对象,单位为分钟。该时间对整个web项目中的所有HttpSession对象有效,时间的计算方式是根据最后一次请求时间作为起始时间,只要用户继续访问,服务器就会更新HttpSession的最后访问时间,并维护该HttpSession。用户每访问服务器一次,无论是否读写HttpSession,服务器都认为该用户的HttpSession活跃了一次,销毁时间则会重新计算,如果有那个客户端浏览器对应的HttpSession的失效时间已到,那么与该客户端浏览器对应的HttpSession对象就会被销毁。其他客户端浏览器对应的HttpSession对象会继续保存不会被销毁。

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

  通过HttpSession实现客户端和服务端会话的维持

  需求:当客户端浏览器第一次访问Servlet是响应“您好,欢迎您第一次访问!”第二次访问时响应“欢迎您回来!”

package cn.itcast;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/*需求:当客户端浏览器第一次访问Servlet是响应“您好,欢迎您第一次访问!
”第二次访问时响应“欢迎您回来!”*/
public class WelcomeSessionServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession(false);
        boolean flag = true;
        if (session==null){
            flag = false;
            req.getSession();
        }

        resp.setContentType("text/plain;charset=utf-8");
        PrintWriter printWriter = resp.getWriter();
        if (flag){
            printWriter.println("欢迎您回来!");
        }else {
            printWriter.println("您好,欢迎您第一次访问!");
        }
    }
}

5.HttpSession生命周期 

    HttpSession对象的生命周期中没有固定的创建时间和销毁时间。何时创建取决于我们什么时候第一次调用了getSession(true)方法。HttpSession对象的销毁时间取决于超时时间的到达以及调用了invalidate()方法。如果没有超时或者没有调用invalidate()方法,那么HttpSession会一直存储,默认超时时间为30分钟(Tomcat的web.xml文件配置的时间就是默认超时时间)。

6.HttpSession对象总结

HttpSession与Cookie的区别

  • Cookie数据存放在客户的浏览器或系统的文件中,而HttpSession中的数据存放在服务器中。
  • Cookie不安全,而HttpSession是安全的
  • 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个域名保存cookie的数量,而HttpSession没有容量以及数量的限制

HttpSession的使用建议

    HttpSession对象是保存在服务短的,所以安全性较高。我们可以在HttpSession对象中存储数据,但是由于HttpSession对象的生命周期不固定,所以不建议存放业务数据,一般情况下我们只是存放用户登录信息。文章来源地址https://www.toymoban.com/news/detail-781480.html

到了这里,关于HttpSession的创建及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java模拟OPC Server服务器并创建节点代码实现

    模拟OPC Server服务器的方法除了使用KEPServerEX6软件以外,还可以使用java代码模拟启动一个opc server。下文详细讲解,如何使用java代码,实现模拟一个或者多个opc server服务器。 OPC(OLE for Process Control)Server是一种用于实时数据通信的标准化软件接口,它允许不同厂商的设备和软

    2024年02月09日
    浏览(45)
  • 使用 Node 创建 Web 服务器

    Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下: 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口),创建 server.js 文件,代码如下所示: 接下来我们在该目录下创建一个 index.html 文件,代

    2024年01月23日
    浏览(51)
  • Java | 详解 创建Web项目、配置Tomcat服务器、实现登录效果

    目录 一、相关工具及技术         1、相关工具         2、相关技术         3、相关 jar 包 二、IDEA 创建 web 项目         1、创建空项目         2、classes目录和lib目录配置         3、tomcat 服务器配置 三、MySQL 配置         1、登录 mysql         2、创建 user 表      

    2024年02月03日
    浏览(54)
  • 使用宝塔面板部署前端项目到服务器

    目录 文章目录 前言 一、第一步:创建文件夹 二、第二步:部署前端项目 三、第三步:打开防火墙 前言 第一步:创建文件夹 第二步:部署前端项目 第三步:打开防火墙 总结 在此之前,我们已经创建了宝塔面板账号、拥有了一台服务器。现在,我们想让我们的前端能够像

    2024年02月03日
    浏览(67)
  • 【Midjourney】Midjourney 注册与使用 ( 下载并注册 Discord | 加入 Midjourney 服务器 | 创建 Discord 个人服务器 )

    用户 与 Midjourney 进行沟通 , 是通过 Discord 社交平台 实现的 , 要想使用 Midjourney , 必须先安装 Discord ; 用户 在 Discord 社交平台 与 Midjourney 机器人 进行聊天 , 用户 先 在 Discord 中输入指令让 Midjourney 生成图片 , Midjourney 生成图片后将生成的图片通过 Midjourney 发送给用户 ; Discord 地

    2024年02月05日
    浏览(113)
  • 【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明

    本插件可以使用蓝图创建WebSocket服务器,并监听响应数据。 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 创建一个WebSocket服务器对象,并监听相应端口,连接地址为 ws://IP:PORT, 比如ws://192.168.1.5:9001 返回的对象需要提升为变量,以后就是用这个对象去操作。 Bind –

    2024年04月25日
    浏览(64)
  • 如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月03日
    浏览(68)
  • 【AWS】使用亚马逊云服务器创建EC2实例

    如今互联网发展十分迅速,有很多企业为满足自身业务的需求,对搭建一台稳定、高效的云服务器的要求越来越高。虽说国内云服务器层出不穷,比如阿里云、腾讯云、华为云等比较主流的云服务,然而有很多企业也有许多国外的的业务需求,所以对搭建海外服务器的需求也

    2024年01月16日
    浏览(57)
  • IntelliJ IDEA创建Web项目并使用Web服务器----Tomcat

    以下是本篇文章正文内容,下面案例可供参考(提示:本篇文章属于原创,请转发或者引用时注明出处。),大家记得支持一下!!!! 每日清醒: ✌✌✌♘慢慢来,谁还没有一个努力的过程。🏆 一定要注意:别忘了设置好之后点击应用!!!!!!!!! maven项目的重点

    2024年02月10日
    浏览(66)
  • HttpSession的创建及使用

    1.HttpSession对象的特点 HttpSession保存在服务器 HttpSession使用Key与Value结构存储数据 HttpSession的Key是字符串类型,Value则是Object类型 HttpSession存储数据大小无限制 2.HttpSession对象的创建     HttpSession对象的创建是通过request.getSession()方法来创建的,客户端浏览器在请求服务端资源时

    2024年02月02日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包