会话
* 概念:浏览器给服务器资源发送请求时会话建立,直到一方断开会话结束。**会话建立一次会话中包含多次请求和响应**。
* 功能:在一次会话的范围内的多次请求间共享数据。
* 方式:
1. 客户端会话技术:Cookie
2. 服务器端会话技术:Session
Cookie
* 概念:客户端会话技术,将数据保存到客户端
* 入门步骤:
1. 创建Cookie对象
* new Cookie(String name, String value)
2. 发送Cookie对象
* reponse.addCookie(Cookie cookie)
3. 获取Cookie,拿到数据
* Cookie[] request.getCookie()
* 原理:
基于响应头set-cookie和请求头cookie实现
* 细节:
1. 可以创建多个Cookie对象,多次调用response的addCookie方法发送Cookie即可
2. 默认情况下,浏览器关闭Cookie数据被销毁。可使用Cookie对象的setMaxAge方法进行设置:setMaxAge(int seconds)
* 参数为正数:将Cookie数据写到硬盘的文件中,进行持久化的存储,正数的大小为cookie的有效时间
* 参数为负数:默认值,浏览器关闭则销毁cookie
* 参数为零:删除cookie
3. 在Tomcat 8之前不能直接存储中文,需将中文数据转码,一般采用URL编码。特殊字符需要使用URL编码
4. 同一个服务器不同项目共享cookie需要使用cookie的setPath(String path)方法,将path设置为"/";不同Tomcat服务器共享cookie使用setDomain()设置
* cookie的特点和作用
* 特点:
1. cookie不可跨域
2. cookie存储在客户端浏览器
3. cookie有数量和大小限制
* 作用:
1. 一般用与存储少量的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别
JSP:入门学习
* 概念
* Java Server Page:Java服务器端页面
* 原理
* JSP本质上就是一个Servlet
* JSP的脚本
* <% code %>:定义的java代码,再service方法中。service方法中可以定义什么,该脚本就可以定义什么。
* <%! code %>:定义的java代码,再jsp转换后的java类的成员位置。
* <%= code %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本就可以定义什么。
* JSP的内置对象
* 在jsp页面中不需要获取和创建,可以直接使用的对象
* jsp一共有9个内置对象
* request
* response
* out:字符输出流对象。可以将数据输出到页面上,类似于response.getWriter()
* 在Tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据
* response.getWriter()数据输出永远再out.write()之前
Session
* 概念
* 服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。
* 快速入门
1. 获取HttpServlet对象
HttpSession request.getSession();
2. 使用HttpServlet对象
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
* 原理
* Session的实现是依赖于Cookie的,获取Session时如果没有Session会创建一个键为JSESSIONID的Cookie,并设置值为sessionid
* 细节
1. 当客户端关闭后,服务器不关闭,两次获取的Session默认情况下不是同一个;如果需要相同,可以创建键为JSESSIONID的Cookie,使用其setMaxAge()方法设置存活时间
2. 客户端不关闭,服务器关闭,两次获取的Session不是同一个,但是Tomcat正常关闭的情况下会自动完成session的钝化和活化,确保数据不会丢失
3. 当服务器关闭时,session会销毁,也可以使用其invalidate()方法手动销毁;如果客户端不关闭,在默认时间后悔自动销毁,可以在web.xml中设置默认销毁时间
* 特点
1. session用于存储一次会话的多次请求的数据,存在服务器端
2. session可以存储任意类型,任意大小的数据
* Session和Cookie的区别
1. session存储数据在服务器端,Cookie再客户端
2. session没有数据大小限制,cookie有数据大小限制
3. session数据安全,cookie相对不安全