首页 > 其他分享 >Session相关知识

Session相关知识

时间:2024-05-07 19:56:27浏览次数:22  
标签:req ServletException Session resp 知识 session IOException 相关

  1. 什么是Session

    当用户请求来自应用程序的Web页时,服务器会给每一个用户(浏览器)创建一个Session对象;
    用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去,默认情况下,只要浏览器没有关闭,这个Session就一直存在。

  2. Session的常用方法

    isNew()//判断是否是新创建的Session,一般在第一次访问的时候出现
    getid()//拿到session的ID
    getCreationTime()//当前session创建的时间
    getLastAccessedTime()//最近的一次访问这个session的时间。
    setAttribute()//设置Session的值
    getAttribute()//获取Session的值
    removeAttribute()//移除Session的值
    invalidate()//手动注销Session
    
  3. Session的应用

    //往session中添加数据
    package com.test.session;
    import javax.servlet.ServletException;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    public class SessionDemon01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //解决乱码问题
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            //从请求中得到session
            HttpSession session = req.getSession();
    
            //往session中添加数据
            session.setAttribute("name","张三");
    
            //得到session的ID
            String id = session.getId();
    
            //判断session是否为新创建的
            if (session.isNew()){
                resp.getWriter().write("session创建成功,sessionID为"+id);
            }else{
                resp.getWriter().write("session已经在服务器中存在,sessionID为:"+id);
            }
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
    //跨Servlet获取Session的值
    public class SessionDemon02 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //解决乱码问题
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
    
            HttpSession session = req.getSession();
            //通过键取出值
            String name = (String) session.getAttribute("name");
            resp.getWriter().write(name);
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    //注销Session,手动注销
    public class SessionDemon03 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            HttpSession session = req.getSession();
            session.removeAttribute("name");
            //手动注销
            session.invalidate();
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    //自动注销,在web.xml里加入<session-config>
    <session-config>
      <!--Session一分钟后失效-->
      <session-timeout>1</session-timeout>
    </session-config>
    
    
  4. Session和Cookie的区别

    • Cookie是把用户的数据写给用户的浏览器,由浏览器保存,可以保存多个
    • Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
    • Cookie的有效期在cookie生成的时候设置进去
    • Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中
    • Session是把用户的数据写进用户独占的session中,服务器保存,登陆信息等重要信息存放入session
    • 如果主要考虑到安全应当使用session

标签:req,ServletException,Session,resp,知识,session,IOException,相关
From: https://www.cnblogs.com/hytip/p/18178249

相关文章

  • Cookie相关
    cookie的概念cookie是一种客户端会话技术将数据保存到客户端。cookie的利弊:1)将数据保存到客户端,十分方便,同时减轻服务器存储压力2)对保存数据的个数(20)及大小有限制(4kb)作用cookie用来保存少量及不太敏感的数据可以在不登入的情况下,对客户端完成身份识别(即在客户端设置......
  • Java测试框架Junit5基础知识点
    Junit5测试框架一:创建一个测试用例junit5的测试依赖:<!--junit5新的编程和扩展模型--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8......
  • Servlet相关知识(2)
    HttpServletResponse类HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用,HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以......
  • 【网络知识系列】-- 网络拓扑图S
    一、整体技术体系架构产品清单:下一代防火墙、数据库审计、负载均衡、感知平台+(检测探针)......
  • 哈希基础知识学习-python版
    哈希哈希表根据key直接进行访问的无序数据结构,复杂度为O(1)哈希表的实现---字典初始化d1=dict()查找#使用中括号[]进行查找,括号内为特定的键,键-值dic={"a":1,"d":0,"e":3}print(dic["a"])#输出1print(dic["z"])#报错修改dic["a"]=5print(dic[&quo......
  • Servlet相关知识
    什么是servlet?JavaServlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。......
  • Python基础知识——缩进、标识符、保留字
    标识符标识符就是程序中,使用的各种名称,例如:变量名、常量名、类名等等。在Python中,对标识符格式的要求与C/C++、Java等差不多:第一个字符必须是字母表中的字母或下划线_;标识符的其他的部分,由字母、数字和下划线组成;标识符对大小写敏感;标识符不能与保留字相同。比如:nu......
  • (搬运)碳知识大全
    碳交易的一个小例子:年初,有两个公司A和B,A公司每年规定排放二氧化碳100吨/年,B也是规定排放二氧化碳100吨/年;政府发放给A的碳配额是100吨/年,发放给B的碳配额也是100吨/年;2)年底,A公司通过节能改造,仅排放二氧化碳80吨,多余的20吨二氧化碳配额,就可以在碳交易市场上出售获得利润。反观B公......
  • 路由跳转、相关api、路由守卫、路由两种工作模式
    【router基本使用(路由跳转,携带数据)】#######跳转#######-js跳转this.$router.push(路径)this.$router.push(对象)-this.$router.push({name:'路由别名'})-this.$router.push({path:'路径'})-组件跳转......
  • maven相关
    maven:apache组织提供的一个顶级项目,由Java开发作用:管理项目构建生命周期管理项目中jar(核心功能)。自动帮程序员甄别和下载第三方库(jar)管理项目基础信息(文档管理、测试报告)配置环境变量:为了在任何路径下都可以使用Maven命令,所以需要配置JAVA_HOME:安装jdk时已......