全国咨询/投诉热线:400-618-9090

首页技术文章正文

Cookie会话相关知识点

更新时间:2019-01-10 来源:黑马程序员 浏览量:

  会话技术 :

  1)会话概念 : 一次会话中包含多次请求和响应.

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

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

  *会话可以应用在购物车(Cookie)

  *方式 :

  //客户端会话技术 : Cookie

  //服务器端会话技术 : Seesion

  Cookie

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

  2)快速入门 :

  *使用步骤 :

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

  -new Cookie(String name,String value)

  2.发送Cookie对象

  -response.addCookie(Cookie cookie)

  3.获取Cookie,拿到数据

  -Cookie[] ->Request.getCookies()

  *如果服务器创建cookie后并且把cookie回写到浏览器后,cookie或保存在浏览器,后续浏览器发送请求访问该服务器项目时会默认携带之前的cookie

  *cookie 是借助头信息(请求头->cookie,响应头->set-cookie)传递的

  3)实现原理

  *第一次访问服务器的时候,不会携带任何cookie

  *如果服务器接收到请求后回写数据的时候如果添加了cookie后,response会通过响应头setCookie把Cookie以 key=value的形式把cookie 回写到浏览器

  *浏览器在接收到cookie之后,会把cookie保存到本地

  *在浏览器为不关闭的情况下,再次访问原服务器项目时会把cookie携带到服务器,通过请求头(cookie --> key = value)

  4)Cookie的细节

  一次可不可以发送多个Cookie ? --> 可以

  解 : 创建多个Cookie对象,使用response调用多次addcookie方法发送Cookie即可

  特点 : Cookie只有通过response.addCookie()的形式才能把Cookie发送到浏览器

  Cookie在浏览器中保存多长时间?

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

  (2)设置cookie生命周期, 持久化存储

  *setMaxAge(int seconds)

  -整数 : 将Cookie数据写到硬盘的文件中,持久化存储,Cookie存活时间

  -负数 : 默认值

  -0 : 删除Cookie信息

  Cookie能不能存中文呢?不管支不支持都不要去存中文

  (1)在tomcat8之前cookie中不能直接存储中文数据

  *需要中文数据转码 --> 一般使用URL编码,

  *如果进行编码,后面必须解码

  (2)在tomcat8之后才支持存储中文

  Cookie获取范围是多大?

  (1)假设在一个tomcat服务器中,部署了多个web项目,name在这些web项目中cookie能不能共享?

  *默认情况下cookie不能共享

  *setPath("/虚拟路径") :设置cookie的获取范围,默认情况下设置当前的虚拟目录

  *如果要共享,则可以将path设置为" / "(代表当前项目的根路径)

  (2)不同的tomcat服务器间cookie共享问题?

  *setDomain(".域名");如果设置一级域名相同,那么两个服务器之间cookie可以共享了

  Cookie的有效路径

  / --> 当前服务器下所有项目共享

  /虚拟路径 --> 当前服务器下当前项目共享

  /虚拟路径/user/b --> 只在 /虚拟路径/user/b 路径下有效

  /虚拟路径/user/ --> /虚拟路径/user/ 下的所有资源有效

  Cookie的特点

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

  2)浏览器对于单个cookie大小有限制(一般4KB左右),以及 对统一域名下的总cookie数量也有限制(20个以内)

  *作用 :

  -->cookie一般用于存储少量的不太敏感的数据到浏览器

  -->在不登录的情况下,完成一个服务器对客户端的身份识别

  JSP(本质是一个servlet) : 执行java代码的html

  1)概念 :

  *Java Server Pages : Java服务器端页面

  *可以理解为 : 一个特殊的页面,其中既可以定义html标签,又可以定义java代码

  *简化书写

  2)原理 :

  *JSP本质上就是一个servlet

  *jsp_Servlet()会把html代码通过内置out对象进行输出到页面从而进行解析

  3)Jsp的脚本 : 定义Java代码的方式

  1.<% java代码%> : 定义的java代码在Service方法中。service可以定义什么,该脚本就可以定义什么

  2.<%!java代码%>:定义的java代码。在jsp转换后的java类的成员位置

  3.<%=java代码%>:定义的java代码会输出到页面上,输出语句中可以顶什么该语句中就可以定义什么

  4)JSP的内置对象

  *在jsp中不需要创建或者获取,可以直接使用的对象

  *jsp一共有9个内置对象

  *out :JspWriter字符输出流.可以将数据输出到页面上reponsegetWriter()类似

  *reponse :

  *request :

  *application : SelectContext

  *session : httpSession

  *pageContext :PageContext

  *config :ServletConfig

  *page : Object 当前页面

  *exception :Throwable



作者:黑马程序员JavaEE培训学院
首发:http://java.itheima.com/

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名