首页 > 其他分享 >学习之Session

学习之Session

时间:2024-02-29 13:11:43浏览次数:16  
标签:username 用户名 session isNew 学习 Session println

1.3.2 HttpSession的使用

用户提交form表单到ServletA,携带用户名,ServletA获取session 将用户名存到Session,用户再请求其他任意Servlet,获取之间存储的用户

  • 定义表单页,提交用户名,提交后
    <form action="servletA" method="post">
        用户名:
        <input type="text" name="username">
        <input type="submit" value="提交">
    </form>
  • 定义ServletA,将用户名存入session
@WebServlet("/servletA")
public class ServletA extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取请求中的参数
        String username = req.getParameter("username");
        // 获取session对象
        HttpSession session = req.getSession();
         // 获取Session的ID
        String jSessionId = session.getId();
        System.out.println(jSessionId);
        // 判断session是不是新创建的session
        boolean isNew = session.isNew();
        System.out.println(isNew);
        // 向session对象中存入数据
        session.setAttribute("username",username);

    }
}
  • 响应中收到了一个JSESSIONID的cookie
1682476311432
  • 定义其他Servlet,从session中读取用户名
@WebServlet("/servletB")
public class ServletB extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取session对象
        HttpSession session = req.getSession();
         // 获取Session的ID
        String jSessionId = session.getId();
        System.out.println(jSessionId);
        // 判断session是不是新创建的session
        boolean isNew = session.isNew();
        System.out.println(isNew);
        // 从session中取出数据
        String username = (String)session.getAttribute("username");
        System.out.println(username);
    }
}
  • 请求中携带了一个JSESSIONID的cookie
1682476350602

getSession方法的处理逻辑

1682477914654

1.3.3 HttpSession时效性

为什么要设置session的时效

  • 用户量很大之后,Session对象相应的也要创建很多。如果一味创建不释放,那么服务器端的内存迟早要被耗尽。
  • 客户端关闭行为无法被服务端直接侦测,或者客户端较长时间不操作也经常出现,类似这些的情况,就需要对session的时限进行设置了

默认的session最大闲置时间(两次使用同一个session中的间隔时间) 在tomcat/conf/web.xml配置为30分钟

1682478412527

我们可以自己在当前项目的web.xml对最大闲置时间进行重新设定

1682478633650

也可以通过HttpSession的API 对最大闲置时间进行设定

// 设置最大闲置时间
session.setMaxInactiveInterval(60);

也可以直接让session失效

标签:username,用户名,session,isNew,学习,Session,println
From: https://www.cnblogs.com/drip3775/p/18043434

相关文章

  • 学习之Cookie
    1.2.3Cookie的提交路径访问互联网资源时不能每次都需要把所有Cookie带上。访问不同的资源时,可以携带不同的cookie,我们可以通过cookie的setPath(Stringpath)对cookie的路径进行设置从ServletA中获取cookiepublicclassServletAextendsHttpServlet{@Override......
  • 学习之会话
    一会话1.1会话管理概述1.1.1为什么需要会话管理HTTP是无状态协议无状态就是不保存状态,即无状态协议(stateless),HTTP协议自身不对请求和响应之间的通信状态进行保存,也就是说,在HTTP协议这个级别,协议对于发送过的请求或者响应都不做持久化处理简单理解:浏览器发送请......
  • 学习之XML
    一XMLXML是EXtensibleMarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。可扩展三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写。在XML基本语法规范的基础上,你使用的那些第三......
  • 前端学习-vue学习005-条件渲染
    使用教程使用v-if,v-else指令来有条件地渲染元素:如下例,当awesome值为真值(Truthy)时渲染第一个h1,否则渲染第二个h1<h1v-if="awesome">Vueisawesome!</h1><h1v-else>Ohno......
  • 最大流学习笔记
    (该笔记用于复习,请不要用此学习)最大流问题对于输入的一个有向图,对于一条边(u,v,w),我们建立一个图包含(u,v,w)和(v,u,0)dinic算法的步骤:1.对当前图进行bfs(只有边权>0的可以走),找到源点到每个点的最短路2.判断源点是否可以走到汇点(bfs完直接判断即可)可以->下一步不可以->返回当......
  • 实战上,通过一段ID 生成器代码,学习如何发现,代码质量的问题(设计模式)
    ID生成器的需求背景介绍ID中文翻译为标识Identifier,这个概念在生活,工作中随处可见,比如身份证、商业条形码、二维码、车牌号、驾照号。聚焦到软件开发中,ID常用来标识一些业务信息的唯一标识,比如订单的单号或者数据库中的唯一主键,比如地址中ID字段(实际上时没有业务含义的,对用......
  • 扣子(coze.cn)| 由浅入深,手把手带你实现Java转型学习助手
    扣子(coze.cn)是一款用来开发新一代AIChatBot的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的ChatBot,并将其发布到各类社交平台和通讯软件上!2月1日,扣子国内版已经正式上线啦~赶快来体验一下吧!一转眼,ChatGPT已经在AI界炙手可热超过一年,堪称新晋......
  • 深度学习-卷积神经网络-tensorflow的用法-49
    目录1.01_first_graph2.sessionrun3.global_variables_initializer4.InteractiveSession5.get_default_graph6.life_cicycle07linear_regression8.manual_gradient9.auto_diff12.softmax_regression13.convolution14.pooling1.01_first_graphimporttensorflowa......
  • 组合数学 学习笔记
    1.几个组合恒等式\((1)C_n^m=C_n^{n-m}\)\((2)\sum\limits_{i=0}^{\min(n,m,k)}{C_n^i\timesC_m^{k-i}}=C_{n+m}^k\)\((3)\sum\limits_{i=0}^nC_n^i=2^n\)\((4)\sum\limits_{i=0}^n{c_n^i\timesi}=n\times2^{n-1}\)\((5)\sum\limits_{i=0}^{n}{C......
  • 树状数组学习笔记
    目录原理(结构)建树应用单点修改,区间求和区间修改,单点求值区间修改,区间求和单点修改,区间求最值求逆序对个数二维树状数组trick:树状数组上倍增权值树状数组正文1.原理引用日报图片。设黑色框内数组为\(a_1\toa_8\).可以推得\(c_i=a_......