• Cookie / Session / URL重写


    Cookie

    //创建一个Cookie对象
    Cookie cookie = new Cookie("username","JACK");
    //在客户端存储的时间(生命周期)单位是秒 7天  7*24*60*60
    //如果这里设置为0 就表示客户端不保存该cookie  即临时cookie
    //如果设置为-1  就表示客户端关闭之后就删除该cookie  也可以称之为临时cookie
    cookie.setMaxAge(-1);
    //设置cookie在客户端存放的路径  如果不设置,默认在本项目名称目录下
    cookie.setPath("/");  
    //将创建完好的cookie存放在response相应对象中
    response.addCookie(cookie);
    

    如果浏览器端拒绝存储cookie信息,就会导致JSESSIONID的值不能正常到达客户端,
    那么客户端向服务器发送请求时,就无法将JSESSIONID的值带回到服务器中,从而导致找不到自己的会话Session
    怎么解决:我们可以使用URL地址重写的办法解决

    因为cookie在客户端只允许存储4k的数据,那么实际上cookie存储了3k数据就已经到达了一个极限了,cookie就会显得力不从心了,
    所以在B/S交互中就需要一个更大的存储数据对象,这就是session存在的重要起因。

    Session会话

    当用户通过浏览器访问服务器的应用程序时,程序会为每一个用户创建一个session对象,实际上就是在内存中分配一块内存给该用户使用
    该对象可以存储大量的数据;
    如果浏览器端禁用了cookie功能,那么服务器端传递给浏览器端的jsessionid就没有办法保存,
    这时候当用户再一次向服务器发送请求时,服务器会因为无法找到为用户创建好的session,
    就会再次创建一个session对象,这时就需要我们考虑如何为服务器减少创建session对象的次数;
    使用response对象的两个方法,保证服务端和浏览器端使用的是用一个jsessionid值。
    URL重写
    1--servlet中涉及向客户端输出页面元素的时候,可以在相应的请求地址外面包上一层方法,
      也就是说使用response.encodeURL(“请求地址”);为请求地址添加一个JSESSIONID的值
    2--servlet中涉及跳转到新的页面时,可以使用response.encodeRedirectURL(“请求地址”);为请求地址添加一个JSESSIONID的值
    3--在jsp页面中,涉及到的请求地址,可以使用jstl标签中url的value属性进行设置
      前提是需要导入两个jar包 jstl-1.2.jar 和 standard-1.1.2.jar
      <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
      如:<a href=<c:url value="encodeURL.action"></c:url>>encodeURL</a> 
    4--在jsp页面中使用:<a href="<%=response.encodeURL("encodeURL.action")%>">encodeURL</a>
  • 相关阅读:
    对List实现分页
    笔记2022.05.26
    mybatis 时区设置成UTC后time不能用字符串进行比较
    SAP笔记abap 跳过SAP Access Key 方法
    LOOP GROUP BY 分组循环的使用方法小栗子
    SAP小技巧 双LOOP循环的性能优化
    SAP Shared Memory Objects在不同会话不同ABAP程序中传输数据示例
    转:abap中 跨session传递数据export database
    SQL server 把多条记录查找结果合并成一条记录 L
    linux 实现cp命令递归复制
  • 原文地址:https://www.cnblogs.com/myjavalife/p/4899365.html
Copyright © 2020-2023  润新知