## Cookie ##

# 基本概念;
>> 用于保存一次会话中的记录,存放在客户端(浏览器);
|-- "一次会话"
|-- 当客户端打开一个界面时
被称作一次会话,当浏览器未关闭时,其中所有的点击等
操作都称作一次会话; >> Cookie由服务器发送到客户端;每次会话之后客户端会将cookie回发给服务器;
|-- 保存方式;
|-- 服务器端发送set-cookie响应头;
|-- 获取方式;
|-- 服务器端使用 reuest.getCookies(); # 使用方式;
>> request.getCookies();
>> response.addCookies( new cookie); set- cookie;
>> 能被访问的URL的特点;
|-- 浏览器会对数据进行判断;
> 如果是domain+path开头则传送cookie
> 否则不传送; # 案例;
>> 显示上次用户登录时间;
|-- 具体步骤;
> 保存用户访问网站的第一次时间;
> 创建一个Cookie对象;--- Cookie cookie= new Cookie("showTime",new Date().getTime()+"");
> 设置cookie路径;--- cookie.setPath(uri);
|-- 路径的问题;
|-- domain:localhost;
|-- cookie的数据储存格式;
|-- name value domain path
showTime 123234124 localhost /day09... > 设置cookie存活时间;--- cookie.setMaxAge(Integer.MAX_VALUE); //设置cookie的存活时间;
// 单位为秒;0代表删除该cookie;负数则不储存;
> 发送;response.addCookie(cookie);
> 获取cookie中的信息;--- Cookie[] cookies= request.getCookies();
> 遍历; >> 保存用户名;
|-- 具体步骤;
> 用write(); 语句写好登录框;
> 定义user类,在类中声明三个属性:用户名/密码/remember
|-- remember属性定义成字符串;
在登录界面中将其设定为变量,如果被勾选该值会记录下"true"; > 使用BeanUtils封装从登录框中获取的用户参数;
> 验证用户名和密码是否正确;
|-- 然后验证记住用户名复选框是否被勾选;
|-- 如果勾选;
> 创建Cookie对象;
> 设置Cookie生命周期;
> 设置路径和应用名;
> 将Cookie发送给客户端; |-- 勾选后提交之后跳转到登录界面并展示已经记录下用户名的界面; > 在登录之前,从Cookie中取出Cookie并作比较,如果存在就从中读取用户登录信息,并修改复选框的值; >> 保存用户浏览商品信息;
|-- 具体步骤;
> 创建Book类,用于描述和保存商品基本信息;
> 创建BookDB类,用于模拟数据库,内置一个map集合存放商品信息并编号;
> 创建商品列表,点击查看详情之后,将信息保存到Cookie当中;
|-- 从map集合中取出每一本书;
|-- 通过遍历集合拿到映射关系;
|-- 添加超链接,通过链接拿到该商品的详细信息;
|-- 该链接跳转到商品存放Cookie的界面;
> 将浏览过的信息存放到Cookie当中;
|-- 设计一个队列模式来当作浏览记录的存放ID;
|-- 先遍历所有Cookie;
|-- 获取其中一个Cookie,和当前
|-- 通过getName()获取cookie名字;
> 如果该名字为ids,则表明该商品在Cookie存放界面被第一次预览; > 然后获取到cookie的value并存入字符串,该字符串表现形式为 3-2-1 ;
> 通过【-】将其分割,获取到其中单个的di值;
> 按照该顺序排列浏览记录; > 创建存放Cookie界面;
|-- 获取参数id
|-- 根据id获取到相应的商品;
|-- 显示明细,通过打印商品的toString()方法;
|-- 在Cookie中添加一个ids,用于标识该商品被预览及预览顺序;
|-- 设置相应特性;
|-- 将Cookie发往客户端;
|-- 设置返回商品列表界面的链接; ## Session ## # 基本概念;
>> 是由服务器创建,用于保存用户浏览数据的一个对象;
>> 和Cookie的区别;
|-- Cookie存放在客户端;Session存放在服务器端;
|-- 服务器只向客户端发送一个独立ID,该ID表明了客户端本次会话对应的的SessionID;
|-- 客户端第二次请求时会带上之前的ID,服务器根据对比该ID即可获取对应Seesion中存放的数据; # 生命周期;
>> tomecat为其提供的生命周期为30分钟,该周期可以由客户在配置文件中手动更改;

cooking和session的更多相关文章

  1. Session fixation--wiki

    http://en.wikipedia.org/wiki/Session_fixation In computer network security, session fixation attacks ...

  2. python -使用Requests库完成Post表单操作

    """ 使用Requests库完成Post表单操作 """ #_*_codingn:utf8 _*_ import requests fro ...

  3. session fixation

    转自:session fixation攻击 什么是session fixation攻击 Session fixation有人翻译成"Session完成攻击",实际上fixation ...

  4. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  5. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  6. 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)

           首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...

  7. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  8. Nhibernate的Session管理

    参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...

  9. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

随机推荐

  1. Git ubuntu 升级

    外文文档 This team will distribute the most current stable package of Git for Ubuntu. Stable releases: h ...

  2. Java逆向工程(数据库表生成java类)

    说起来倒是挺简单的,就是听着名字感觉挺高大上.逆向工程方式有很多,比如mybatis就提供了一个这样的工具mybatis-genderator,这个我反正是没用过只是听说过,以前在公司都是用公司写好的 ...

  3. cannot be found on object of type xx.CacheExpressionRootObject

    0 环境 系统环境:win10 编辑器:IDEA 1 前言->环境搭建 1-1 pom依赖 <?xml version="1.0" encoding="UTF ...

  4. [从 0 开始的 Angular 生活]No.38 实现一个 Angular Router 切换组件页面(一)

    前言 今天是进入公司的第三天,为了能尽快投入项目与成为团队可用的战力,我正在努力啃官方文档学习 Angular 的知识,所以这一篇文章主要是记录我如何阅读官方文档后,实现这个非常基本的.带导航的网页应 ...

  5. yaml文件的格式

    后缀为.yml    格式一般就是key:空格 value    这里的value可以是 普通数据(数字,字符串)   ---------------------------------------- ...

  6. 106)PHP,缩略图代码和结果展示

    首先是 代码展示: <?php class CImage { /** * 生成保持原图纵横比的缩略图,支持.png .jpg .gif * 缩略图类型统一为.png格式 *@param $src ...

  7. 关于Pycharm安装扩展包的方法

    Python中第三方的库(library).模块(module),包(package)的安装方法以及ImportError: No module named 1.pip install .... 一般 ...

  8. android翻译应用、地图轨迹、视频广告、React Native知乎日报、网络请求框架等源码

    Android精选源码 android实现高德地图轨迹效果源码 使用React Native(Android和iOS)实现的 知乎日报效果源码 一款整合百度翻译api跟有道翻译api的翻译君 RxEa ...

  9. FPGA大疆考试准备内容

    1.寄存器与锁存器 锁存器:电平触发的存储单元,在有效电平时间里可以多次改变数据. 优点:    占触发器资源少,缺点是容易产生毛刺.(附上去毛刺的方法:格雷码计数器(*https://blog.cs ...

  10. Qt 信号阻塞和断开

    Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理. 1. 阻塞方法:bool QObject::blockSignals(b ...