更新时间: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