cookie相关说明:

1、cookie由服务器端创建,然后添加到HttpServletResponse中发送给客户端(浏览器)。

2、可以添加多个cookie键值对。

3、cookie由键值名和键值组成。“相同domain和path”中的键值名不能重复,添加键值名重名的键值对会覆盖上一个同名的键值对。

4、添加cookie时要指定cookie所在域(setPath),指定存在时长(setMaxAge)。

4、服务端创建好cookie后提交给客户端,之后浏览器的每次请求(HttpServletRequest)里都会携带“cookie数组”。

5、springmvc有两种方式获取:(1)在控制器中通过注解@CookieValue(键值名),获取指定某个cookie。(2)通过HttpServletRequest中的getcookies方法获取cookie数组,然后迭代里面的每一个cookie键值对。

session相关说明:

1、服务器会根据客户端的请求(HttpServletRequest)创建session(request.getSession())。

2、每一个session都有一个唯一的标示“sessionID”,可通过.getId()获得。

3、session是存储在服务器端的,每一个session都有一个id,当创建一个session后,会将该sessionID存放到此次访问的cookie中,当下次客户端的访问到来需要提取服务器中的session时,会根据访问中cookie里的sessionID值来找到服务器中的具体session。

4、服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。

5、访问html等静态资源时不会创建session

相关操作代码:

    //读取cookie数组,之后迭代出各个cookie
public void showCookies(HttpServletRequest request){
Cookie[] cookies = request.getCookies();//根据请求数据,找到cookie数组 if (null==cookies) {//如果没有cookie数组
System.out.println("没有cookie");
} else {
for(Cookie cookie : cookies){
System.out.println("cookieName:"+cookie.getName()+",cookieValue:"+ cookie.getValue());
}
}
} //创建cookie,并将新cookie添加到“响应对象”response中。
public void addCookie(HttpServletResponse response){
Cookie cookie = new Cookie("name_test","value_test");//创建新cookie
cookie.setMaxAge(5 * 60);// 设置存在时间为5分钟
cookie.setPath("/");//设置作用域
response.addCookie(cookie);//将cookie添加到response的cookie数组中返回给客户端
} //修改cookie,可以根据某个cookie的name修改它(不只是name要与被修改cookie一致,path、domain必须也要与被修改cookie一致)
public void editCookie(HttpServletRequest request,HttpServletResponse response){
Cookie[] cookies = request.getCookies();
if (null==cookies) {
System.out.println("没有cookies");
} else {
for(Cookie cookie : cookies){
//迭代时如果发现与指定cookieName相同的cookie,就修改相关数据
if(cookie.getName().equals("name_test")){
cookie.setValue("new_value");//修改value
cookie.setPath("/");
cookie.setMaxAge(10 * 60);// 修改存活时间
response.addCookie(cookie);//将修改过的cookie存入response,替换掉旧的同名cookie
break;
}
}
}
} //删除cookie
public void delCookie(HttpServletRequest request,HttpServletResponse response){
Cookie[] cookies = request.getCookies();
if (null==cookies) {
System.out.println("没有cookie");
} else {
for(Cookie cookie : cookies){
//如果找到同名cookie,就将value设置为null,将存活时间设置为0,再替换掉原cookie,这样就相当于删除了。
if(cookie.getName().equals("name_test")){
cookie.setValue(null);
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
break;
}
}
}
}

springMVC操作cookie和session的更多相关文章

  1. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  2. JavaScript能否操作cookie和session?

    JavaScript能否操作cookie和session? 解答:JavaScript可以操作cookie,但是不能操作session

  3. django中操作cookie与session

    cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...

  4. django操作cookie和session

    一.cookie:保存在客户端浏览器上的键值对 Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会 ...

  5. Django 操作Cookie与Session

    目录 Cookie Session Django中操作Cookie 基本操作 基于cookie的登录装饰器 Django中操作Session 基本操作 Session流程解析 基于session的登录 ...

  6. (25)Django中操作cookie与session组件(添加cookie和删除cookie)

    cookie是存在于客户端浏览器上的键值对,是明文的 cookie是当用户访问网站时候和数据提起携带过去,安全性比较差, 容易被拦截 session存在于服务端的键值对,是一串加密的字符串 当用户登陆 ...

  7. Django中cookie和session的操作

    一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...

  8. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  9. day 62.3 Django基础八之cookie和session

    Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...

随机推荐

  1. Google Map 谷歌地图

    <script> var map; function initMap() { var position = new google.maps.LatLng(1.539187, 103.647 ...

  2. Linux下的常用指令汇总

    内容提纲: 1.ubuntu安装 2.linux目录结构 3.apt.dpkg 4.date.cal.tzselect 5.修改密码.忘记密码 6.注销/重启/关机 7.cd pwd 8.-h --h ...

  3. 梯度消失 / 梯度爆炸以及Xavier初始化

    2018-12-06 16:25:08 首先我们先来看一下求解梯度的公式,以下面三层的网络为例: 如果w初始化为大于1的数字,在深层神经网络计算梯度的时候就会出现梯度爆炸的现象: 如果w初始化为小于1 ...

  4. spring cloud: zuul(三): ribbon负载均衡配置

    zuul的routes配置下path/url组合不支持负载均衡 下面介绍zuul的routes配置下的path/serviceId负载均衡配置 spring-boot-user微服务开启了:7901, ...

  5. pseudotime专题

    review:Computational Methods for Trajectory Inference from Single-Cell Transcriptomics Tools/Algorit ...

  6. 微信小程序如何导入字体图标

    前提:我们已经拥有了从阿里图标库下载下来的一系列的字体图标文件1:找个其中的ttf格式的文件,然后打开https://transfonter.org/网站2:点击Add fonts按钮,加载ttf格式 ...

  7. Kali安装nessus

    下载 在官方网站下载对应的 Nessus 版本:http://www.tenable.com/products/nessus/select-your-operating-system 这里选择 Kal ...

  8. 【洛谷p1106】删数问题

    (洛谷t2755暂时过不去了) 删数问题[传送门] 洛谷算法标签: emmmm……删数问题又牵扯到了字符串.因为毕竟高精度的数240位呢!要是输入一个整型,要码240行来求出每一位……怕是还没求出来就 ...

  9. linux常用网络命令ping和arping

    linux常用网络命令ping和arping ping 向目标主机发送icmp请求包 常用来测试当前主机与目标主机网络连接状况 常见选项 -c              设置发包的个数 -s      ...

  10. python记录_day31 进程同步和进程通信

    一.进程同步 1.同步锁(又叫互斥锁) 加锁的代码以后,同一时间内只能被一个进程执行 from multiprocessing import Process, Lock def fun(loc): l ...