##  会话技术

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. 每天一个linux命令(15)-tail

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新, ...

  2. JavaScript 設計模型 - Iterator

    Iterator Pattern是一個很重要也很簡單的Pattern:迭代器!我們可以提供一個統一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,並不需要 ...

  3. HTML5全屏背景视频与 CSS 和 JS(插件或库)

    译文原链接:http://codetheory.in/html5-fullscreen-background-video/ 前言: 当网页载入时,自动播放的全屏背景视频已经成为当前颇受欢迎的趋势. 就 ...

  4. 线上SpringCloud网关调用微服务跨机房了,咋整?

    1.前言 公司内考虑到服务器资源成本的问题,目前业务上还在进行服务的容器化改造和迁移,计划将容器化后的服务,以及一些中间件(MQ.DB.ES.Redis等)尽量都迁移到其他机房. 那你们为什么不用阿里 ...

  5. Docker实战之MySQL主从复制

    前言 曾几何时,看着高大上的架构和各位前辈高超的炫技,有没有怦然心动,也想一窥究竟?每当面试的时候,拿着单应用的架构,吹着分库分表的牛X,有没有心里慌的一批? 其实很多时候,我们所缺少的只是对高大上的 ...

  6. 一个很实用的css技巧简析

    我是小雨小雨,专注于更新有趣.实用内容的小伙,如果内容对大家有一点帮助,那么就请动动手指,给个关注.点赞支持一下吧. ^ - ^ 序言 前两天接到一个需求,其中包括一个有序的列表,我们今天就来看看这个 ...

  7. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

  8. NS域名工作原理及解析

    DNS域名工作原理及解析   0x00 定义 DNS( Domain Name System)是“域名系统”的英文缩写,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.D ...

  9. removeAttribute getAttribute setAttribute

    1.removeAttribute() 方法删除指定的属性. 注:removeAttributeNode() 方法从元素中删除指定的属性节点.简单的来讲,removeAttribute() 移除元素内 ...

  10. Jessica's Reading Problem POJ - 3320

    Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17562   Accep ...