为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

cookieppt课件

2020-10-31 28页 ppt 376KB 261阅读

用户头像 机构认证

爱赢

公司经营范围:网络软件设计、制作、图文设计、影视制作(编辑)

举报
cookieppt课件会话管理.*会话 问题:什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。 会话过程中要解决的一些问题? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐。 思考:用户购买的商品保存在request或servl...
cookieppt课件
会话管理.*会话 问题:什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。 会话过程中要解决的一些问题? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐。 思考:用户购买的商品保存在request或servletContext中行不行? .实现会话跟踪技术(URL重写、隐藏单域、Cookie、Session) a)URL重写 b)隐藏表单域 c)Cookie:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。 客户端可以采用两种方式来保存这个Cookie对象,一种方式是保存在客户端内存中,称为临时Cookie,浏览器关闭后这个Cookie对象将消失。另外一种方式是保存在客户机的磁盘上,称为永久Cookie。以后客户端只要访问该网站,就会将这个Cookie再次发送到服务器上,前提是这个Cookie在有效期内。这样就实现了对客户的跟踪。Cookie是可以被禁止的。 d)session:每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。 在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户 Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效.保存会话数据的两种技术 Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。 HttpSession Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。. 会话由谁创建的? 会话由容器创建的。 会话保存在哪里? 会话保存在容器中 有若干客户端与服务器连接,服务器会为每个客户端的一次会话创建一个会话对象,而这些会话对象都在容器中,如何区分会话对象与客户端的联系? 多数容器都采用cookie机制实现会话机制结论:多数容器都使用cookie机制实现会话,也就是说使用cookie来保存客户端与服务器里会话对象之间的对应关系。.*Cookie概念 Cookie是保存在客户端的小文本,保存的位置分两种 Cookie可能保存在客户端浏览器的所占内存中,关闭浏览器后,Cookie就不再存在 Cookie也可能保存在客户PC机的硬盘上,设置有效时间,超过有效时间后失效.Cookie技术--放映浏览器服务器servlet1servlet2Set-Cookie2:name=洗衣机Set-Cookie2:name=洗衣机name=洗衣机IE缓存区cookie:name=洗衣机cookie:name=洗衣机..Session--放映浏览器B浏览器A浏览器CServlet1(购买)session=request.getSession()Session.setAttribute(name,objcet)Servlet2(结帐)Session=request.getsession()obj=Session.getAttribute(name);Session(a)name=洗衣机Session(b)name=电视Session(c)name=冰箱.Cookie的常见应用 简化登录:很多网站在登录时,可以选择多久之内不需要登录,在选择的时间段内,不用登录即可以到欢迎页面。 记录浏览记录:购物网站,每次登录后,会看到曾经浏览过的商品信息。.Cookie应该怎么用 Cookie能够把小文本保存到客户端,在服务器与客户端进行传输。然而,Cookie容易造成信息泄露,另外,客户端可以通过设置阻止Cookie,也可能手工清除Cookie,因此,使用Cookie的原则: 不用cookie保存对保密性要求高的信息,例如银行卡密码等 不用cookie实现必要功能,防止cookie被删除后出现错误 可以说:cookie用来实现“锦上添花”的功能,也就是说,一旦cookie被禁止或者被删除,应用依然能正常运行.使用cookie实现会话机制的过程 1、当容器创建一个新的HttpSession对象后,即生成一个随机数,称为会话ID,并将ID值封装成一个名字为JSESSIONID的cookie,返回给客户端。 2、调用request.getSession获得会话对象时,容器先从request中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,返回使用。 3、如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话对象,重复步骤1.创建Session对象若存在会话则返回该会话,否则新建一个会话。 HttpSessionsession=request.getSession(); HttpSessionsession=request.getSession(true); 上面二种创建session的方法效果是一样的。首先获取传递进来的在Cookie中存放的sessionID,再根据sessionID查找session对象,如果没有找到将创建一个新的session对象,并保存到Cookie中发送到客户端。如果找到了,就将session对象赋予给引用 若存在会话则返回该会话,否则返回NULL HttpSessionsession=request.getSession(false); 这种方式创建过程:首先获取传递进来的在Cookie中存放的sessionID,再根据sessionID查找session对象,如果没有找到将返回null,如果找到了,就将session对象赋予给引用.设置session失效的几种方法方法一:在web.xml中的session-config配置 session-timeout元素(WEB.XML文件中的元素)用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或负数,则表示会话将永远不会超时。如: <session-config>      <session-timeout>30</session-timeout>//30分钟 </session-config> .设置session失效的几种方法方法二:直接在应用服务器中设置,如果是tomcat,可以在tomcat下conf/web.xml中找到<session-config>元素,tomcat默认设置是30分钟 <session-config> <session-timeout>30</session-timeout> </session-config>.设置session失效的几种方法方法三:setMaxInactiveInterval设置当前会话时间 setMaxInactiveInterval设置的是当前会话的失效时间,不是整个web的时间,单位为以秒计算。如果设置的值为零或负数,则表示会话将永远不会超时。常用于设置当前会话时间。 session.setMaxInactiveInterval(600);参数600单位是秒,即在没有10分钟活动后,session将失效 需要注意的是如果上述三个地方如果都设置了,有个优先级的问题:1<2<3.session案例 使用Session完成用户登陆; 利用Session实现一次性验证码; 使用session可以实现购物车.创建Cookie对象 在ServletAPI中,存在类Cookie,可以使用new关键字创建cookie对象 例如: 可见:Cookie对象是保存一对键值对,都是字符串形式CookienewCookie=newCookie(“username",“wangwu");.Cookie类的其他方法 Cookie类中定义了一系列的方法.保存及获取Cookie Cookie要保存到客户端,凡是写到客户端的方法,基本都在响应中。HttpServletResponse中提供了方法,把Cookie保存到客户端 再次访问与保存Cookie相同域名的网站时,HTTP将把有效时间内的Cookie都发送到服务器,容器将把Cookie封装到请求中,HttpServletRequest类提供了获取cookie对象的方法response.addCookie(newCookie)Cookie[]cookies=request.getCookies();.实现登录的思路 用户登录时,可以选择长时间内不需要登录 访问登录页面index.jsp时,获取所有Cookie对象,检查是否存在已经保存的用户名和密码,如果存在,则直接提交到Servlet进行登录处理。如果不存在,则显示index.jsp页面 Servlet中获取用户选择不需要登录的时间,把登录信息保存到cookie中,设置有效时间,写到客户端.实现登录步骤1:修改index.jsp修改index.jsp文件,加入脚本,获取cookie,判断是否存在已经保存的用户名和密码,如果存在,则直接到LoginServlet登录验证,否则就显示index.jsp<%Stringusername=null;Stringpass=null;Cookie[]cookies=request.getCookies();if(cookies!=null){for(Cookiecookie:cookies){if(cookie.getName().equals("username")){username=cookie.getValue();}if(cookie.getName().equals("password")){password=cookie.getValue();}}}if(username!=null&&password!=null){request.getRequestDispatcher("LoginServlet?username="+username+"&pwd="+password).forward(request,response);}%>.实现登录步骤2:修改LoginServlet 修改LoginServlet,把登录成功的信息作为Cookie保存到客户端,并设置有效时间。//获得JSP页面的时间信息Stringtimelength=request.getParameter("timelength");intdays=0;if(timelength!=null){days=Integer.parseInt(timelength);}if(days!=0){Cookieusernamecookie=newCookie("username",username);Cookiepasswordcookie=newCookie("password",pwd);usernamecookie.setMaxAge(days*24*3600);passwordcookie.setMaxAge(days*24*3600);response.addCookie(usernamecookie);response.addCookie(passwordcookie);}.运行测试选择10天内,登录再次访问index.jsp,可以直接登录成功;修改时间,为当前时间的十天以后,再次访问index.jsp,可见cookie失效,需要重新登录。.思考 如果登陆成功,用户名存储在session域中,在成功页面添加超链接,跳转到test.jsp,能否获取session存储的属性值?.阻止Cookie后的处理方法 阻止Cookie后,会话失效的主要原因是:每次调用getSession方法,首先是查找名字是JSESSIONID的cookie,如果没有,则创建新的会话对象。当cookie被阻止,每次都找不到JSESSIONID名字的cookie,所以每次都创建新的会话,因此都认为没有登录。 解决办法:强制把JSESSIONID传递给相关资源即可 如果Cookie被阻止,可以使用URL重写方法,强制把名字为JSESSIONID的Cookie的值添加到URL,该方法在HttpServletResponse中定义:<ahref=<%=response.encodeURL("test.jsp")%>>访问test.jsp页面</a><br>强制把JSESSIONID添加到url访问路径:http://localhost:8080/cookieDemo/test.jsp;jsessionid=47CB14FA99418694134559B332CBA2B0.URL重写后,会话依然可用 使用URL重写后,会话依然可以用。通过地址栏,可以看到URL为:http://127.0.0.1:8080/test/admin.jsp;jsessionid=3FBF140BF8C8E0DE5B44F28C1B0A4147 可见:jsessionid值强制添加到URL,因此不会每次都创建新的会话对象登录成功,点击“访问admin.jsp页面”把jsessionid值强制追加到URL,会话依然有效。.获取客户端保存的最后访问时间Cookie[]cookies=request.getCookies();//获取客户端的所有Cookie对象for(inti=0;cookies!=null&&i<cookies.length;i++){ if("lastAccessTime".equals(cookies[i].getName())){//判断当前Cookie中的name是否是想要的cookie longl=Long.parseLong(cookies[i].getValue());//如果是想要的Cookie,则把Cookie中的value取出out.write("你的最后访问时间为:"+newDate(l).toLocaleString());//yyyy-MM-dd } } Cookieck=newCookie("lastAccessTime",System.currentTimeMillis()+"");//创建cookie,response.addCookie(ck);//把cookie信息写回到客户端.Cookie与会话的区别 session是在服务器端保存用户信息,Cookie是在客户端保存用户信息 session中保存的是任意对象,Cookie保存的是字符串 session随会话结束而关闭,Cookie可以长期保存在客户端硬盘上,也可以临时保存在浏览器内存中 Cookie通常用于保存不重要的用户信息,重要的信息使用session保存.**
/
本文档为【cookieppt课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索