##  会话技术

1、会话:一次会话中包含多次请求和响应。

  *  第一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。

2、功能:再一次会话的范围内的多次请求间,共享数据

3、方式:

  1、客户端会话技术:Cookie

  2、服务器端会话技术:Session

##  Cookie

1、概念:将数据保存在客户端,客户端会话技术

2、快速入门:

  *  使用步骤:

    1、创建Cookie对象,绑定数据

    *  new  Cookie(String  name,  String  value)

    2、发送Cookie对象

    *  response.addCookie(Cookie  cookie)

    3、获取Cookie,拿到数据

    *  Cookie[]  request.getCookies()

package com.Cookie.demo01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* Cookie快速入门
*/
@WebServlet("/CookieDemo01")
public class CookieDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、创建Cookie对象
Cookie cookie = new Cookie("msg","hello");
//2、发送Cookie
response.addCookie(cookie);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package com.Cookie.demo01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* 获取Cookie
*/
@WebServlet("/CookieDemo02")
public class CookieDemo02 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//3、获取Cookie
Cookie[] cs = request.getCookies();
//获取数据,遍历Cookies
if (cs != null){
for (Cookie c : cs) {
String name = c.getName();
String value = c.getValue();
System.out.println(name+":"+value);
}
}
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}

3、实现原理

  *  基于响应头set-cookie和请求头cookie来实现的

4、cookie的细节

  1、一次可不可以发送多个cookie?

    *  可以

    *  可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。

  2、cookie在浏览器中保存多长时间?

    1、默认情况下,当浏览器关闭后,Cookie数据被销毁

    2、持久化存储:

    *  setMaxAge(int  seconds)

      1、正数:将Cookie数据写到硬盘的文件中。持久化存储。cookie存活时间。

      2、负数:默认值

      3、零:删除cookie信息

package com.Cookie.demo01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* Cookie快速入门
*/
@WebServlet("/CookieDemo01")
public class CookieDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、创建Cookie对象
Cookie cookie = new Cookie("msg","hello");
//设置cookie的存活时间
//存活30秒 负数默认值(关闭浏览器就没了) 0删除cookie信息
cookie.setMaxAge(30);
//2、发送Cookie
response.addCookie(cookie);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package com.Cookie.demo01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* 获取Cookie
*/
@WebServlet("/CookieDemo02")
public class CookieDemo02 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//3、获取Cookie
Cookie[] cs = request.getCookies();
//获取数据,遍历Cookies
if (cs != null){
for (Cookie c : cs) {
String name = c.getName();
String value = c.getValue();
System.out.println(name+":"+value);
}
}
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}

  3、cookie能不能存中文?

    *  在tmocat8之前   cookie中不能直接存储中文数据

      *  需要将中文数据转码  ----  一般采用URL编码(%E3)

    *  在Tomcat8 之后  cookie中可以存储中文数据

  4、cookie获取范围多大?

    1、假设在一个tmocat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?

      *  默认情况下cookie不能共享

      *  setPath(String  path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录

      *  如果要共享,则可以将path设置为"/"

    2、不同的Tomcat服务器间cookie共享问题?

      *  setDomain(String  path):如果设置一级域名相同,那么多个服务器之间的cookie可用共享了

        *  setDomain(".baidu,com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

5、cookie的特点和作用

  1、cookie存储数据在客户端浏览器

  2、浏览器对于单个cookie的大小有限制(4kb)  以及 对同一个域名下的总cookie的数量也有限制(20个)

  *  作用:

   1、cookie一般用于存储少量的不太敏感的数据

   2、在不登录的情况下,完成服务器对客户端的身份识别

JavaWeb----Cookie&Session的更多相关文章

  1. JavaWeb -cookie&session&application

    cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...

  2. JavaWeb——Cookie,Session学习汇总

    什么是Cookie Cookie的作用 安全性能 Cookie的语法 Cookie注意细节 Cookie实例练习 什么是会话Session Session语法 Session与浏览器窗口的关系 ses ...

  3. JavaWeb Cookie,Session

    Cookie 1.Cookie翻译过来是饼干的意思.Cookie是服务器通知客户端保存键值对的一种技术.客户端有了Cookie 后,每次请求都发送给服务器.每个Cookie的大小不能超过4kb. 2. ...

  4. JavaWeb:Cookie处理和Session跟踪

    JavaWeb:Cookie处理和Session跟踪 Cookie处理 什么是Cookie Cookie 是存储在客户端计算机上的文本文件,保留了各种跟踪信息.因为HTTP协议是无状态的,即服务器不知 ...

  5. JavaWeb基于session和cookie的数据共享

    在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样, ...

  6. 【JavaWeb】Cookie&Session

    Cookie&Session Cookie 什么是 Cookie Cookie 即饼干的意思 Cookie 是服务器通知客户端保存键值对的一种技术 客户端有了 Cookie 后,每次请求都发送 ...

  7. JavaWeb请求与响应 Cookie&Session

    1.请求与响应 &Cookie&Session 1.1.请求与响应 HTTP协议 概念:英文全称:HyperText Transfer Protocol 中文全称:超文本传输协议   ...

  8. Javaweb Cookie机制

    Javaweb Cookie机制 一.前言 HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的,即使 HTTP1.1 支持持续连 ...

  9. cookie,session,sessionid

    cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...

  10. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

随机推荐

  1. tar:file-changed-as-we-read-it报错处理

    在使用tar命令对Mysql的数据目录进行备份打包时出现如下报错: tar cvzf mysql.tgz mysql /bin/tar: /path/to/mysql: file changed as ...

  2. 全平台Markdown笔记软件——Notable

    简介 The markdown-based note-taking app that doesn't suck. 一款简介.跨平台的本地笔记软件,github地址:https://github.com ...

  3. Intellij IDEA创建 Web 项目

    快速构建 Web 项目 打开IDEA,新建Project,左边菜单栏选择 Maven,直接点 Next 选择GroupId和ArtifactId 选择项目名称,默认会填上工程位置.模块姓名等,直接点F ...

  4. java基础-略知一二

    Collection Set HashSet LinkedHashSet SortedSet TreeSet List ArrayList 构造方法 LinkedList 构造方法 Map 特性 方法 ...

  5. C++走向远洋——63(项目二2、两个成员的类模板)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. C++走向远洋——25(项目二,游戏类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:game.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. C++走向远洋——57(项目二2、动物这样叫、抽象类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  8. linux学习--2.文件管理的基本命令

    文件的基本操作 前言: 看完这篇图文我应该能保证读者在Linux系统下对文件的操作能跟用Windows环境下一样流畅吧,好了下面正文 正文: 基础知识: linux里共有以下几类文件,分别为目录(di ...

  9. python爬虫之Appium手机APP爬虫

    一.Appium工作原理(详情见:https://www.cnblogs.com/sophia194910/p/7515165.html) Appium的功能其实很简单:监听一个端口,然后接收由cli ...

  10. IdentityServer4迁移至3.x版本注意问题详解

    前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升 ...