会话技术
程序中的会话:
打开浏览器---->访问特定的网站(访问服务器)---->
关闭浏览器
将浏览器和服务器之间的产生数据,会话!
服务器端会话技术:session
浏览器端会话技术:cookie :登录
特例:京东(不登录/登录)--->不登录--->将会话数据保存在cookie(加入购物车)
登录---->服务器(session中)
应用场景:
1) 打开浏览器---->访问网站----->填写用户登录数据(会话数据)---
>校验成功------->首页,会显示当前的用户名信息---->关闭浏览器
直接打开浏览器---->访问同一个网站---->直接显示用户信息
2) 访问商品列表--->点击某一个商品----->浏览器关闭
下一次进来---->商品列表----->记录之前访问过的商品数据(图片等)
Cookie: 浏览器端的存储技术
小饼干,小甜点
1) 服务器端创建Cookie,将cookie数据并携带给浏览器
public Cookie(String name, String value) (响应头:setCookie:key=value)
2) 通过浏览器端将数据存储在缓存区中,(请求头:cookie :key=value)
public void addCookie(Cookie cookie):将cookie写回浏览器,等待下次访问
将指定 cookie 添加到响应。可多次调用此方法设置一个以上的 cookie。
3)public Cookie[] getCookies() :浏览器在再次访问的时候,服务器端就可以获取到cookie数据
返回包含客户端随此请求一起发送的所有 Cookie 对象的数组
--->cookie的基本使用:
1) 创建Cookie
2) 将cookie数据由服务器写回浏览器
3) 再次访问服务器,可以获取cookie数据
获取cookie的名称: getName()
获取的cookie的内容:getValue()
cookie的细节:(不适合存储私有数据!)
1) cookie内容只能存储String类型的数据
2) 浏览器端存储cookie的个数有限制:300个,
每一个站点可以存储20多个cookie,每一个cookie大小不超过4kb
3) 有效期的问题:
public void setMaxAge(int expiry):cookie的有效期:默认浏览器关闭时,cookie会话结束!
设置 cookie 的最大生存时间,以秒为单位。
参数为正整数: 超过了当前的值,表示cookie过期了
0: (清空浏览器记录):直接将cookie会话结束
public void setPath(String uri):设置当前cookie的有效路径
如果存在项目名称 : 由”/项目名称” ,到”/rem”,如果设置了有路径,才能使用cookie数据
案例1:
步骤分析:
记录上一次访问的时间
创建一个Serlvet :RemServlet url-pattern:/rem
1) 记录当前cookie的名称:lastTime new Cookie(“lastTime”,long类型的时间)
2) public Cookie[] getCookies():通过api获取指定名称的cookie
3) 判断当前获取的指定的cookie是否为空
如果为空,
提示:当前您是第一次访问
如果不为空:
获取当前的指定名称lastTime的cookie的值--->String
String--->long(int)---->pareseLong(value)--->long
----->Date对象---->toLocalString():提示:您上一次访问的时间是:
4)还有记录当前的系统时间:new Cookie(“lastTiem”,new Date()--->long)
5) 由服务器将cookie携带给浏览器
addCookie(cookie) ;
注意:1)cookie不能存储中文(要存储中文:URLEncoder/URLDencoder分别加密和解密)
2)Cookie不能跨浏览器
案例2: 记录当前用户浏览过的商品(显示足迹)
简单认识jsp(重点:el表达式)
Java Server Page:java 服务页面
Jsp,其实就是一个serlvet程序 (也是反射机制)
1) tomcat服务器将jsp---->翻译成java文件
2) Jvm---->将java文本编译class文件
3) 通过反射输出里面的内容
<%jsp脚本代码%>
<%=jsp的输出表达式%>
<%! jsp定义成员变量 %>
<%--jsp的注释:不会被解析--%>
1) 改造页面product_list.htm---->变成jsp文件
2) 点击商品列表中的某个商品,跳转到指定的servlet后台(getProductById)
3) 见图
