zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    实例告诉你如何把 if-else 重构成高质量代码!
    Java8 快速实现List转map 、分组、过滤等操作
    大学四年Java学习路线规划,所有私藏资料我都贡献出来了!
    Redis面试题汇总(附答案),面试突击专用
    代码优化大盘点:35 个 Java 代码优化魔鬼细节
    ES6+Webpack+Babel基本环境搭建
    抽象类和接口的异同及实例解析
    .NET ORM 哪家强
    Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8
    ASP.NET 让无码编程不在是梦 -.NET通用平台、通用权限、易扩展、多语言、多平台架构框架
  • 原文地址:https://www.cnblogs.com/xujianbo/p/4945033.html
Copyright © 2011-2022 走看看