什么是cookie?
客户端(浏览器)会话技术,将数据保存到客户端
什么是会话?
浏览器给服务器发送请求,会话建立。浏览器关闭,会话停止。一次会话包含多次请求和响应。
注:就像是两个人会谈,你问一句我答一句,一问一答就是一次请求和一次响应,最后会谈结束,那么这次会话就结束了,也就是浏览器关闭了。
- 会话有几种方式?
两种。
1.客户端会话技术:cookie
2.服务器端会话技术:session
- 会话有几种方式?
cookie的原理是什么?
基于 响应头set-cookie 和 请求头cookie 实现cookie的使用步骤是什么?
- 创建Cookie对象,绑定数据
new Cookie(String name , String value) - 发送Cookie对象
response.addCookie(Cookie cookie) - 获取Cookie,拿到数据
Cookie[] request.getCookies()
- 创建Cookie对象,绑定数据
Cookie的细节有哪些?
一次可不可以发送多个cookie?
可以。创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。cookie在浏览器中保存多长时间?
默认情况下,浏览器关闭,cookie数据被销毁。但可以通过setMaxAge(int seconds)方法进行持久化存储
- sextMaxAge(int seconds)方法有哪些注意点?
- seconds为正数
将cookie数据存储到硬盘中持久化存储,指定cookie存活时间,到期后,cookie自动失效。 - seconds为负数
默认值,浏览器一关就没了 - seconds为零
删除cookie信息
- seconds为正数
- sextMaxAge(int seconds)方法有哪些注意点?
cookie能不能存中文?
tomcat8之前,不能存中文。tomcat8之后,开始支持中文数据,但是特殊字符还不支持。建议用url编码存储,url解码解析。cookie能否共享?
- 在一个tomcat服务器中部署多个web项目,这些项目中的cookie能否共享?
默认情况下,不能共享。但可以使用setPath方法。设置cookie的获取范围。默认情况下,设置当前的虚拟目录。如果要共享,可以将path设为“/”。 - 不同的tomcat服务器间,cookie能否共享?
如果设置一级域名相同,则可以共享。方法:setDomain(String path).例如:setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中的cookie可以共享。
- 在一个tomcat服务器中部署多个web项目,这些项目中的cookie能否共享?
cookie的特点是什么?
- 存储的数据在客户端浏览器
- 浏览器对单个cookie有大小限制(4kb),以及同一个cookie下涉及的域名也有限制。
cookie的作用是什么?
- 用于存储少量不太敏感的数据
- 在不登录的情况下,完成服务器对客户端的身份识别。
如何删除cookie ?
新建一个同名cookie ,设置setMaxAge() 为0 ,写入到response
cookie有哪些常用api ?
getName(); -- 获取cookie的名称
getValue(); -- 获取cookie的值
setDomain(String domain); -- 设置Cookie的有效域名.
setPath(String path); -- 设置cookie的获取范围。
setMaxAge(int maxAge); -- 设置Cookie的有效时间.
cookie的分类有哪些?
- 会话级别:浏览器关闭,cookie消失
- 持久级别:通过设置cookie的setMaxAge()来设置cookie的存活时间
什么是Session?
服务器端会话技术,在会话的多次请求间共享数据,将数据保存在服务器端的对象中。
Session的原理是什么?
session的实现是依赖于cookie的。用户第一次访问的时候,通过getSession()方法,就会创建一个session,响应的时候将sessionId通过cookie传回到浏览器,下次访问的时候会将sessionid带回,getSession()方法就通过sessionId找到之前创建的session。(关闭浏览器再打开,cookie中存的sessionid已经被销毁,所以会再次创建一个session)
Session的使用步骤是什么?
- .获取HttpSession对象
HttpSession session = request.getSession(); - 使用HttpSession对象
1.Object getAttribute(String name)
2.void setAttribute(String name,Object value)
3.void removeAtrribute(String name)
- .获取HttpSession对象
Session的细节有哪些?
当客户端关闭。服务器不关闭。两次获取的session是否为同一个?
默认情况下不是。但可以通过创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化存储,使session相同。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);
客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
不是同一个。服务器关闭后,为确保数据不丢失,tomcat会自动完成session的钝化和session的活化。
什么是session的钝化?
在服务器关闭前,将session对象系列化到硬盘上。什么是session的活化?
在服务器启动后,将ession文件转化为内存中的session对象。Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);
补充:什么是序列化?
将对象的状态信息转换为可以存储或传输的形式的过程
session什么时候被销毁?
- 服务器关闭
- session对象调用invalidate(),可以让session自杀。
- 30分钟后,session会默认失效
30
session的特点是什么?
- 存储的是会话中多次请求的数据,存在服务器端
- 可以存储任意类型,任意大小的数据。
- Session与Cookie有什么区别?
- session存储数据在服务器端,cookie存储在客户端
- session数据没有大小限制,cookie有
- session数据安全,cookie相对不安全。
JSP是什么?
Java server pages : java 服务器端页面。
可以理解为,一个既可以写html,也可以写Java代码的特殊页面。用于简化书写。
JSP = Java代码 + HTML的元素 + JSP内置东西(后面再学)
JSP的原理是什么?
本质上就是ServletJsp什么时候被转化成java文件?转化几次?
Jsp文件会被转化成Java文件,存放于Tomcat的work目录下
JSP的脚本是什么?
JSP定义Java代码的方式
JSP的脚本如何定义?
- <% 代码 %>
services方法可以定义什么,该脚本就能定义什么 - <%! 代码 %>
在jsp转换后的Java类的成员位置 - <%= 代码 %>
会输出到页面,输出语句可以定义什么,该脚本就可以定义什么
注意:第一种和第二种里面的Java代码要写分号,第三种不能加分号!!!
- <% 代码 %>
JSP的内置对象是什么?
在jsp页面中,不需要获取和创建,可以直接使用的对象
Jsp有几个内置对象?
9个,今天只学3个
request:请求
response:响应
out
out是什么?
字符输出流对象out有什么作用?
将数据输出到页面,和 response.getWriter() 类似
- response.getWriter()和out.write()有什么区别?
- 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
- response.getWriter()数据输出永远在out.write()之前
- response.getWriter()和out.write()有什么区别?