情景1:

京东在买东西的时候,只有结帐的时候才会要求必须登录账户

#1.状态管理

##(1)什么是状态管理?

  将浏览器与web服务器之间多次交互当做一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来

##(2)如何进行状态管理

  方式一:将状态保存在客户端(浏览器端)

    cookie技术

  方式二:将状态保存在服务器端

    session技术

###(3)cookie技术

#### 1)什么是cookie?

    服务器临时存放在浏览器端的少量数据

### 2)工作原理

  浏览器访问服务器时,服务器会将少量数据以set_cookie消息头的形式发送给浏览器,浏览器将这些数据保存下来;

  当浏览器再次访问服务器,会将之前保存的这些数据以cookie消息头的形式发送给服务器  

### 3)添加cookie

  cookie c = new cookie(string name,string value);

  注:  name:cookie的名称

    value:cookie的值

  response.addcookie(c);

### 4)读取cookie

  Cookie[ ] request.getCookie();

  注:

    a.一个Cookie对象封装了一个Cookie的信息(包括了cookie的名称和值)

    string cookie.getName()

    string cookie.getValue()    

    b.有可能返回null

### 5)编码问题

  a.什么是编码问题

    cookie只能保存合法的ascii字符,中文需要转换成合法的ascii字符才可以

  b.如何处理?

  String URLEncoder.decode(String str,String charset);

  String URLDecoder.decode(String str,String charset);

  c.建议:

  在添加cookie时,对所有的值都统一使用上述方法来进行处理

###6)生存时间

  默认情况下,浏览器会将cookie保存在内存里,

  只要浏览器不关,则cookie会一直存在,可以调用cookie.setMaxAge方法来设置cookie的生存时间

  生存时间:

  setMaxAge(int seconds)

  注:  a.单位是秒

    b.值可以

      >0 浏览器会将cookie保存在硬盘上,当超过指定的时间,浏览器会将cookie删除

      <0 default 缺省值,即浏览器会将cookie保存在内存里面

      =0 删除cookie

        比如,要删除名称为city的cookie  Cookie c =new Cookie("city","");

        c.setMaxAge(0)

### 7)cookie的路径问题

  a.什么是cookie的路径问题

  浏览器在向服务器上的某个地址发送请求时,会比较该地址是否符合cookie的路径的要求,只有符合条件的cookie才会被发送

  b.cookie的默认路径

    cookie的默认路径等于添加该cookie的web组件的路径

  c.匹配规则

    比如,cookie的路径是"/day07/abc"

    如果访问的是/day07/findCookie1.jsp                 no

          /day07/abc/findCookie2.jsp          yes

          /day07/abc/sub/findCookie3.jsp    yes 

    即:  请求路径要么等于cookie的路径,要么cookie路径的子路径,则该cookies会被发送

  d.修改cookie的路径

    cookie.setPath( )

  

### 8)cookie的限制

    a.可以被用户禁止

    b.不安全   注: 不要将敏感数据以cookie的方式来保存  

    c.只能保存少量数据  注:大约是4k

    d.cookie的数量也有限制  注:大约几百个

    e.cookie只能保存字符串

    

创建servlet程序知识点详解---servlet-day07的更多相关文章

  1. 创建servlet程序知识点详解---servlet-day01

    方法调用完后,其中的所有局部变量都会消失 ###网络架构 -CS:Client Server  客户端服务器 特点:每种平台都需要开发相对应的app, 开发成本高  功能升级需要下载最新的客户端,用户 ...

  2. 创建servlet程序知识点详解---servlet-day05

    jdbc.properties怎么写? 把秘密改为自己电脑设置的 password url 3306 是安装mysql时所确定的端口  后面还可以接字符集的限定 #1 jsp是什么?(java ser ...

  3. 创建servlet程序知识点详解---servlet-day03

    #1.表单包含有中文参数值,如何处理? ##(1)为什么会有乱码? 表单提交时,浏览器会对中文参数值进行编码/ 注:会按照表单所有的页面打开时所使用的字符集进行编码 比如,浏览器会使用utf-8对中文 ...

  4. 创建servlet程序知识点详解---servlet-day12

    自定义标签 (1)编程步骤 step1 jsp标签分为复杂标签技术(old),简单标签(new) 注(了解) jsp标签技术分为复杂标签技术(old),简单标签技术(new) step2 ###MVC ...

  5. 嵌入式Linux应用程序开发详解------(创建守护进程)

    嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...

  6. Activity知识点详解

    Activity知识点详解 一.什么是Activity 官方解释: The Activity class is a crucial component of an Android app, and t ...

  7. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  8. VS2010开发程序打包详解

    VS2010开发程序打包详解 转自:http://blog.sina.com.cn/s/blog_473b385101019ufr.html 首先打开已经完成的工程,如图: 下面开始制作安装程序包. ...

  9. Java线程创建形式 Thread构造详解 多线程中篇(五)

    Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...

随机推荐

  1. kotlin 语法跟 java 的不同

    本文是本人的作品,转载请表明出处 1.extends  用 (冐号):代替.MainActivity extends Activity, 现在是  MaiActivity :Activity() 2. ...

  2. vMware 按装 MacOs

    大概思路:1.vMware11 下载以管理员运行2.服务项按名称排序把四荐停止运行3.插件unlock 以管理员运行4.载入apple Mac os x 10.11文件5.打开虚拟机 wzfou如果报 ...

  3. SVN常用命令说明

    本文转载至  http://www.blogjava.net/jasmine214--love/archive/2011/01/12/342839.html :1.5 及更新版本 名词说明: WC:W ...

  4. Ubuntu16.04首次root登录设置

    一.首次登录root模式设置 当第一次安装并登录Ubuntu16.04系统时,系统默认只能使用guest模式登录.登录系统后,在图像界面的右上方的系统设置中可转换为普通用户模式. 在普通登录模式下,经 ...

  5. iOS-野指针与僵尸对象

    野指针. C语言: 当我们声明1个指针变量,没有为这个指针变量赋初始值.这个指针变量的值是1个垃圾指 指向1块随机的内存空间. OC语言: 指针指向的对象已经被回收掉了.这个指针就叫做野指针. 僵尸对 ...

  6. 使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis

    glusterfs 怎么集群,网上一搜铺天盖地的 可利用这个特点做单节点高可用,因为K8S 哪怕节点宕机了 master 会在随意一台节点把挂掉的复活 当然我是在自己的环境下跑,经过网络的gluste ...

  7. [原]eclipse + pydev :Error in sitecustomize; set PYTHONVERBOSE for tracaeback: KeyError: 'sitecustomize'

    问题点: 安装 eclipse + pydev的时候出现 Error in sitecustomize; set PYTHONVERBOSE for tracaeback: KeyError: 'si ...

  8. 记录一份Oracle 正确的监听配置文件listener.ora与tnsnames.ora

    一.前言 昨天中午接到领导指示,有其他组的负责人B在厄瓜多尔演示他们组的产品,然后我们组的负责人就想说也在那边搭一套环境,(北美那边的亚马逊云环境),让B帮忙演示下我们的系统. 于是,开始了一个比较曲 ...

  9. Mysql命令行tab自动补全方法

    在mysql命令行有时为了方便想要按tbl键自动补全命令,以便节约时间. 具体方法如下: 第一步:修改my.cnf vi mysql/etc/my.cnf 将下图红框的代码注释,修改成如下代码: #d ...

  10. Oracle 修改表 Alter Table...

    --增加列ALTER TABLE Student add sex number(2);--删除列ALTER TABLE Student drop column sex;--更改列属性 ALTER TA ...