(13)会话和cookie技术
来源:互联网 发布:linux 删除tomcat日志 编辑:程序博客网 时间:2024/06/01 21:54
一、什么是会话?
会话可简单理解为:用户开一个浏览器访问某个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少个资源,直到用户关闭浏览器,整个过程,称为一次会话。
二、会话过程中要解决的一些问题?
每一个用户在使用浏览器与服务器进行会话的承重,不可避免产生一些数据,服务器要想办法为每个用户保存用户的数据。
比如:多个用户点击超链接通过一个servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点击结账servlet时,结账servlet可以得到用户各自购买的商品为用户结账。
如何保存用户上次登录时间?
如何显示用户在淘宝上的浏览商品,有时不需要登陆,就可以看到。
如何把登陆的用户名和密码电脑,下次登陆,不需要重新输入。
解决之道就是cookie技术
三、cookie技术
cookie是客户端技术,服务器在客户端保存的信息,比如登录名,密码就是cookie,这些信息就像小甜饼一样,服务器端在需要的时候可以从客户端读取,保存在客户端的浏览器缓存目录下
cookie原理示图
①cookic读取:只能读取同一个项目下的cookie
②cookie是在服务器创建,保存在浏览器端
③cookie的生命周期可以通过cookie.setMaxAge(200);
如果不设置,则生命周期当浏览器关闭时,就消亡
④cookie可以被多个浏览器共享
⑤理解:键值对构成的表。
⑥一个web应用可以保存多个cookie
⑦cookie存放的时候是以明文方式存放,因此安全性较低,我们可以通过加密后保存
补讲一个md5算法,以后的密码要加密存放,在验证密码时,对用户输入的密码,进行MD5加密
然后到数据库中进行验证。
public final class MD5 { public static final String MD5(String s) { char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strTemp = s.getBytes(); MessageDigest mdTemp = MessageDigest.getInstance("MD5"); byte[] md = mdTemp.digest(); int j = md.length; char[] str = new char[j * 2]; int k = 0; for (int i = 0; i < j; ++i) { byte byte0 = md[i]; str[(k++)] = hexDigits[(byte0 >>> 4 & 0xF)]; str[(k++)] = hexDigits[(byte0 & 0xF)]; } return new String(str); } catch (Exception e) { } return null; }}
四、cookie应用一:得到上次登录的时间
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); Cookie[] cookies=request.getCookies(); boolean b=false;//假设没有这个cookie,当找到时,将标记改变 //假设保存的上次登录时间的cookie"lasttime" "2011-11-11 12:12:12" //这里我们考虑一种情况:用户第一次登录‘您是第一次登录’ if(cookies!=null)//首先保证有cookie,才遍历 { for(Cookie cookie:cookies) { //取出name String name=cookie.getName(); if("lasttime".equals(name)){ // out.println("您上次登录的时间是:"+cookie.getValue()); SimpleDateFormat simpledateformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowTime= simpledateformat.format(new Date()); cookie.setValue(nowTime);//设置新的cookie值 cookie.setMaxAge(7*3600*24);//保留一周 response.addCookie(cookie); //显示 b=true; break; } } } if(!b){ //没有找到 out.println("您是第一次登录"); // SimpleDateFormat simpledateformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowTime= simpledateformat.format(new Date()); //把当前日期保存cookie Cookie cookie=new Cookie("lasttime",nowTime); cookie.setMaxAge(7*3600*24);//保留一周 response.addCookie(cookie); } }
- (13)会话和cookie技术
- 会话技术 Cookie和Session
- 会话技术:session 和 cookie
- 会话技术Cookie和Session
- 会话技术:Cookie和Session
- 会话技术session和cookie
- 会话技术 Cookie和Session
- 会话技术:cookie和session
- 会话管理(Cookie技术和Session技术)
- 会话跟踪技术(一):Session和Cookie技术
- 会话技术 cookie和session 学习笔记
- Web会话技术Cookie和Session
- 会话跟踪技术:HttpSession和Cookie
- cookie和session两种会话技术
- cookie和session会话的技术
- 会话跟踪技术:会话Cookie,URL重写和HttpSession
- 会话跟踪技术:会话Cookie,URL重写和HttpSession
- 会话跟踪技术:会话Cookie,URL重写和HttpSession
- Oracle 用hint来影响执行计划
- Javaweb基础之cookie&session
- ionic2+启动白屏问题-------之补充解决之道
- Subway
- 信号在android源码/external/dhcpcd 源码项目中的应用解读分析
- (13)会话和cookie技术
- 正则表达式
- X250无法开机问题解决
- 【操作系统学习日记】2.BIOS(基本输入输出系统)
- 一起艳学Centos7(三)
- 【自学记录】SpringBoot+IDEA+Maven(二)
- mysql共享锁与排他锁
- POJ 1679 The Unique MST (prim判断最小生成树是否唯一)
- 简单的银行系统实现,新手上路,不足之处请见谅