网站底部固定代码,珠海做网站哪里公司好,苏州调查公司有哪些,国外旅游网站模板下载久违了#xff0c;之前忙碌了一周赶毕设#xff0c;今天抽空更新~ 一.理论知识
1.会话#xff1a;用户打开浏览器#xff0c;访问web服务器的资源#xff0c;会话建立#xff0c;直到有一方断开连接#xff0c;会话结束。在一次会话中可以包含多次请求和响应~ 2.会话跟…久违了之前忙碌了一周赶毕设今天抽空更新~ 一.理论知识
1.会话用户打开浏览器访问web服务器的资源会话建立直到有一方断开连接会话结束。在一次会话中可以包含多次请求和响应~ 2.会话跟踪一种维护浏览器状态的方法服务器需要识别多次请求是否来自于同一浏览器以便在同一次会话的多次请求之间共享数据~ 需要注意的是HTTP请求协议是无状态的为了保证每次请求的速度不慢每次浏览器向服务器发送请求时服务器都会将该请求视为新的请求因此我们需要会话跟踪技术来实现会话内数据的共享~ 二.Cookie客户端会话跟总监技术
1.使用 如上图Cookie是客户端会话技术将数据保存到客户端以后每次请求都携带Cookie数据进行访问。 在某个Servlet中首先创建Cookie对象
Cookie cookie new Cookie(username,Jsl);
然后调用Response对象发送Cookie对象再添加一些提示符
resp.addCookie(cookie);
resp.setContentType(text/html;charsetutf-8);
resp.getWriter().write(使用成功~);
运行Tomcat并访问Servlet Chrome浏览器中查看数据 Cookie已经被保存。 再新建另一个Servlet 获取Cookie数组
Cookie[] cookies req.getCookies();
写下面一段循环目的是获取上面咱们自定义的Cookie数据
for(Cookie cookie:cookies){String namecookie.getName();if(username.equals(name)){String value cookie.getValue();resp.setContentType(text/html;charsetutf-8);resp.getWriter().write(name:value);}}
重新启动Tomcat并访问AServlet 再访问BServlet获取成功 以上即为一次会话中两次请求之间共享数据的经典案例~
2.原理 Cookie的实现是基于Http协议的。 在发送数据的时候使用set-Cookie响应头将数据发送到浏览器的内存中而获取数据的时候使用cookie请求头来获取到cookie的数据。
3.生命周期
默认情况下Cookie由于存储在浏览器内存中当浏览器关闭时内存释放Cookie即会被销毁~ setMaxAge(int seconds)设置Cookie存活时间 正数将Cookie写入浏览器所存在电脑的硬盘持久化存储到时间即自动删除负数默认值浏览器关闭则会将Cookie销毁零删除Cookie 4.设置中文
Cookie不能直接存储中文需要进行URL转码。 创建对象时先编码 String name拜仁慕尼黑~;URLEncoder.encode(name);Cookie cookienew Cookie(name,name);resp.addCookie(cookie);resp.setContentType(text/html;charsetutf-8);resp.getWriter().write(使用成功~);
获取时再解码
Cookie[] cookies req.getCookies();for(Cookie cookie:cookies){String namecookie.getName();if(name.equals(name)){String value cookie.getValue();value URLDecoder.decode(value);resp.setContentType(text/html;charsetutf-8);resp.getWriter().write(name:value);}}
如下中文汉字的数据亦可成功存储到cookie之中~ 三.Session服务器会话跟总监技术
1.使用 Session即服务端会话跟踪技术将数据保存到服务端~JavaEE提供HttpSession接口来实现一次会话的多次请求间数据共享功能~ 获取Session对象并传入值
HttpSession session req.getSession();
session.setAttribute(name,jsl);
在另一个Servlet中获取Session对象的数据 HttpSession sessionreq.getSession();Object namesession.getAttribute(name);System.out.println(name);
分别访问C和D两个Servlet后控制台成功输出
2.原理 Session基于Cookie实现 如上在一次会话中多次请求之间的Cookie是同一个值~ 本质还是将Session的唯一标识id作为Cookie值在多次请求之间共享通过响应头获取id再将id通过请求头传输给别的请求~ 3.钝化、活化
服务器重启后Session中的数据还存在~
钝化在服务器正常关闭之后Tomcat会自动将Session数据写入硬盘的文件中~活化再次启动服务器后从文件中加载数据到Session中~
Session数据想共享浏览器一定不能关闭~
4.销毁
默认情况下无操作30分钟后会自动销毁~也可以使用invalidate()方法将自己销毁~
四.对比 服务器很难被攻破~
购物车一般使用Cookie长期存储~偏好设置一般用Cookie长期存储~用户名展示一般用Session安全保护~需要一提的是保存密码30天之类的功能是一种不太安全的操作~验证码不能“不打自招”必须使用Session~