Day27 JavaWeb知识 (4)Cookie & Session
2019-06-06 19:09
417 查看
请求转发和重定向
- 重定向
- - //以前的写法
response.setStatus(302);
response.setHeader("Location","login_success.html");
- - //重定向写法:重新定位访问, 参数即跳转的位置
response.sendRedirect("login_success.html");
地址栏上显示的是最后的那个资源的路径地址 - 请求次数最少有两次,服务器在第一次请求后,会返回302以及一个地址,浏览器根据这个地址执行第二次访问
- 可以跳转到任意路径,不是自己的工程也可以跳
- 效率稍微低一点,执行两次请求
- 后续的请求,没法使用上一次的request存储的数据,或者没法使用上一次的request对象,因为这是两次不同的请求
- - //请求转发的写法 : 参数即跳转到位置
request.getRequestDispatcher("login_success.htm").forward(request,response);
- 地址栏上显示的是请求servlet的地址 返回200 OK
(一)Cookie
服务器发给客户端,并且存储在客户端上的一份小数据
- 应用场景:
- - 自动登陆,浏览记录,购物车 - 为什么会有Cookie
- - http的请求是无状态.客户端与服务器在通讯的时候,是无状态的,
- - 为了更好的用户体验,交互,公司层面讲是为了收集用户习惯
一.Cookie使用
- 简单使用
在响应的时候,添加Cookie
Cookie cookie = new Cookie("aa","bb");
//给响应,添加一个cookie
response.addCookie(cookie); - 客户端收到的信息里面,响应头中多了一个字段 Set-Cookie aa=bb
Cookie cookies = request.getCookies();
if(cookies != null){
for(Cookie c : cookies){
String cookieName = c.getName();
String cookieValue = c.getValue();
syso(cookieName + "=" + cookieValue);
}
}
二.案例1 显示最近访问的时间
- 判断账号是否正确
- 如果正确,则获取cookie, 但是得到的cookie是一个数组,我们要从数组里面找到我们想要的对象
- 如果找到的对象为空,表明是第一次登陆,那么要添加cookie
- 如果找到的对象不为空,表明不是第一次登陆
三.案例2 显示商品浏览记录
- 将html原型文件,放到工程的WebContent里面
- 在WebContent目录下新建一个jsp文件,product_list.jsp,然后拷贝原来product_list.html的内容
到jsp里面,建好之后,jsp里面的所有ISO-8859改成UFT-8
//拷贝html标签的所有内容 . 替换jsp里的html标签 - 修改product_info.htm里面的手机数码超链接标签 product_list.jsp
- 修改首页(index.html)顶部的手机数码跳转到位置为 product_list.jsp
- 清除浏览记录
其实就是清除Cookie,删除cookie是没有什么delete方法的,只有设置maxAge为0
Cookie cookie = new Cookie("history","");
cookie.setMaxAge(0); //设置时间为0,立即删除
coolie.setPath("/CookieDemo02");
response.addCookie(cookie);
四.Jsp里面使用java代码
jsp
Java Server Pager ---->最终会翻译成一个类,就是一个Servlet
- //定义全局变量
<%! int a = 99; %>
//定义局部变量
<% int b = 999; %>
在jsp页面上,显示a和b的值
<%=a %>
<%=b %>
五.Cookie安全问题
- 由于Cookie会保存在客户端上,所以有安全隐患问题,
- Cookie的大小与个数有限制.
(二)Session
一.概述
- 会话. Session是基于Cookie的一种会话机制.
Cookie是服务器返回一小份数据给客户端,并且存放在客户端上
Session是,数据存放在服务器端
二.常用API
HttpSession session = request.getSession(); //得到一个session对象
- //得到会话ID
String id = session.getId(); - //存值
session.setAttribute(name,value); - //取值
session.getAttribute(name); - //移除值
session.removeAttribute(name);
三.生命周期
- 创建
如果有在servlet里面调用了request.getSession() - 销毁
session是存放在服务器的内存中的一份数据,可以持久化..Redis.. 即使关了浏览器,session也不会销毁
销毁方式:
1.关闭服务器
2.session会话时间过期, 有效期过了, 默认有效期:30分钟
四.案例3 简单购物车
- 获取要添加到购物车的商品id
- 获取购物车存放东西的session
- 判断购物车里面有没有该商品
- 输出界面(跳转)
移除Session中的元素:
//强制关掉会话
session.invalidate();
//从session中移除某一个数据
session.removeAttribute("cart");
相关文章推荐
- 20170902 JavaWeb Cookie与Session相关知识
- JavaWeb基于session和cookie的数据共享
- JavaWeb开发知识总结(Cookie,Session)
- JavaWeb--DeepLearningCookie&Session&Token
- 为什么说session依赖cookie,以及cookie的常用知识
- cookie和session一点知识
- .net知识系列之二:(net内置对象request,reponse,server,session,cookie,application,viewstate)
- PHP基础知识 - session和cookie的区别
- 关于cookie和session的一些知识
- jsp ,servlet中session ,Cookie 相关知识
- JavaWeb--Servlet过滤器Filter和SpringMVC的HandlerInterceptor(Session和Cookie登录认证)
- Session-Cookie相关知识
- JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)
- JavaWeb之Servlet:Cookie 和 Session
- JavaWeb之Cookie&Session
- [Java]Session,Cookie知识与应用
- JavaWeb学习篇之----Session&&Cookie
- JavaWeb学习篇之----Session&&Cookie
- JavaWeb之Cookie&Session
- 关于cookie、session、application知识 的整理