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. gulp自动化打包工具

    /** * Created by hasee on 2016/7/5. */var gulp = require('gulp');var sass = require('gulp-sass');//容 ...

  2. vue 导出excel表格

    对于涉及到数据比较多的管理后台导出excel 表格这个需求就非常的常见了 所以? vue 怎么到处excel表格的? 有两种办法 1:请求接口后台直接给你的是excel文件,你需要做的就是怎么接收ex ...

  3. Java 反射(简单捋一下)

    有Student类,Person类,还有一个叫Class的类,这是反射的源头. 正常方式:通过完整的类名 > 通过new实例化 > 取得实例化对象 反射方式:实例化对象 > getC ...

  4. Shell脚本中的并发(转)

    转自http://blog.csdn.net/wangtaoking1/article/details/9838571 主要记录一下Shell脚本中的命令的并发和串行执行. 默认的情况下,Shell脚 ...

  5. 可访问范围 与 visual 或 abstract “修饰符”

    protected:在当前类内定义,则在当前类“内部”可以调用,则在 派生子类"内部" 也可以调用 private,除去,在 派生子类"内部" 也可以调用,其它 ...

  6. p1470 Longest Prefix

    原本就想到dp,可是是我的思路是在串的各个位置都遍历一次set,看dp[i-st[k]]是否为1且前length(st[k])是st[k].这样200000*200*10会超时.更好的办法是在i位取前 ...

  7. django 中基于类的视图

    django 视图 分为两种: 1.  FBV  基于函数的视图      function   based  view 2.  CBV  基于类的视图         class   based  ...

  8. CentOS7 下源代码安装apache2.4

    Apache httpd 2.4 源代码安装   https://httpd.apache.org/docs/2.4/install.html   这里选用Apache2.4版本. wget http ...

  9. selenum threding多线程运行 实例

    1.配置相关驱动 chrome驱动 下载驱动,配置到环境变量中 如 xxxxchrome.jar 将其新建目录c:/driver---将目录 配置到环境变量 firefox驱动 下载驱动,将gecko ...

  10. SQL SERVER 子查询使用Order By;按In排序

    [子查询]使用order by percent * from table order by id) a 这时发现结果没有按id排序,需要将100 percent 改成 99.999 percent 或 ...