zoukankan      html  css  js  c++  java
  • JavaWeb之session

    Session是服务器端技术

      利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

    Session原理

      Session本身基于Cookie,利用Cookie回写了一个JSESSIONID(JSESSIONID就是服务器为每个session创建的一个唯一的标识)

    • 通过调用request.getSession();获取session,  session域范围:一次会话.(多次请求.)

    session是基于cookie的 ,如果客户端cookie禁用了,怎样追踪session?

      可以手动在在请求参数后拼上 ?jsessionid=44A7AAEB8A1547815F6E37EFC0684C8C

      或者 使用url重写,encodeURL,encodeRedirectURL 不过这种方法不建议使用.因为要重写所有的url比较麻烦 

      还可以使用隐藏表单域的方法

    Session对象的创建和销毁

    服务器端第一次调用getSession()的方法时候创建session对象!

    Session销毁:

      服务器非正常关闭! 服务器正常关闭session会被序列化.work路径下,再启动会反序列化消失

      手动销毁session 调用session.invalidate()  

      session过期(默认有郊时间30分钟,在tomcat的web.xml中可修改)

     Session案例

      Session用于验证码的校验

        需要在生成验证码的时候的,将验证码的4个字符存入到session中.

      Session实现简单购物车

        要想浏览器关闭后,购物信息还在,需要把JSESSIONID通过cookie回写浏览器

             

     HttpSession session = request.getSession();
    
             String sessionId = session.getId();
    
             Cookie cookie = new Cookie("JSESSIONID", sessionId);
    
             cookie.setMaxAge(60*60);
    
             response.addCookie(cookie);

    实际应用可以结合redis,把session放在redis中,(redis做主从复制)

     

  • 相关阅读:
    SpringMVC返回JSON数据时日期格式化问题
    elementUI-tree组件 懒加载
    vue elementUi tree 懒加载使用详情
    Mybatis ResultMap Collection 复合主键
    ElasticSearch-IK分词
    Spring中的InitializingBean接口的使用
    ContextLoadListener & DispatcherServlet 加载顺序以及加载过程
    Spring中查看加载配置文件中 加载类的个数及详情
    DispatcherServlet 被加载顺序
    JetBrainsIDEA-structure结构继承的图标说明
  • 原文地址:https://www.cnblogs.com/lilixin/p/5728629.html
Copyright © 2011-2022 走看看