您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > java培训之Servlet技术3
Day3大纲•Cookie概述•Cookie使用的三个步骤•Cookie的机制•Cookie的安全问题•Session概述•Session使用的四个步骤•Session跟踪机制•Session总结Cookie概述•cookie是当你浏览每个网站时,由WEB服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID号、密码、浏览过的网页、停留的时间等等。•服务器通过cookie的响应头将cookie发送给客户机,其形式为名称=值•客户机则以文件的形式将cookie存放在本地硬盘上,具体存储位置与浏览器相关HTTP/1.1200OKSet-Cookie:CustomerID=1234;domain=abc.com;path=/salesCookie使用的三个步骤•使用Cookie–创建cookie对象:•Cookiecolor=newCookie(“color”,”red”);–在响应中加入cookie:•response.addCookie(color);–通过request取回cookie•Cookie[]cookie=request.getCookies();Cookie示例•示例:记录用户访问次数•Cookie[]c=request.getCookies();•intcount=1;•if(c!=null){•for(inti=0;ic.length;i++){•CookieaccountCookie=c[i];•if(accountCookie.getName().equals(accountCount)){•count=Integer.parseInt(accountCookie.getValue())+1;•break;•}•}•}•response.addCookie(newCookie(accountCount,String.valueOf(count)));Cookie的机制•具体来说Cookie机制是采用的是在客户端保持状态的方式,它是在客户端的会话状态的储存机制,它需要用户打开客户端的cookie支持。•Cookie的作用就是为了解决HTTP无状态的缺陷所作的努力。Cookie的安全问题•Cookie从本质意义上来说,可以看做是用户访问一个网站后留下的身份证,但Cookie不能作为代码来执行,也不会传送病毒,且为你所专用,并只能由提供它的服务器来读取。•Cookie中保存的信息片断以“名/值”对的形式存储。•一个网站只能取得该网站放在你的电脑中的信息,它无法从其他的网站保存的Cookie文件中取得信息,也无法得到你的电脑上任何的东西。•Cookie中的内容大多数经过加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们的真正含义。Session概述•HTTP协议特点:无状态协议–每个客户端请求,对服务器而言都是新的–服务器不记住客户端的任何信息–这样的协议适用于在web上快速获取信息,同时,HTTP协议不支持维护客户机状态•在线购物特点:服务器应能识别出每个客户的不同的购物车•会话:–会话(浏览器与服务器之间的交互)是在指定阶段来自同一客户的一系列的HTTP请求–会话跟踪:将一个请求与会话关联的过程•会话管理:对容器要求–识别来自同一客户的请求–维护每个客户的状态会话管理技术•一般原理–会话唯一标识:sessionID•常用技术–Cookie–隐藏表单域•inputtype=“hidden”name=“sessionID”value=“…”/–url重写•=......•使用session进行会话管理Session使用的四个步骤•获得•获取属性•设置属性•销毁获得Session对象•通过request对象获取Session对象HttpSessionsession=request.getSession();容器:1、Servlet通知容器,它需要Session对象;2、容器创建sessionID,它是客户这次会话的唯一标识;3、容器创建HttpSession对象,Servlet获得这个对象Session跟踪机制•通过request对象获取Session对象HttpSessionsession=request.getSession();容器:1、Servlet通知容器,它需要Session对象;2、容器创建sessionID,它是客户这次会话的唯一标识;3、容器创建HttpSession对象,Servlet获得这个对象利用Session存取数据•通过Session对象来存取数据•Session.setAttribute(“name”,value)•Session.getAttribute(“name”)•容器:•1、在Session对象中保存数据,可以传递给同一个系统的其他Servlet或者是页面。•2、不同的客户端同时访问时,根据sessionId来自动获取Session中保存的数据。•3、HttpSession对象中只能保存Object类型的数据。Session销毁与失效•Session.invalidate();•Session.setMaxIncativeInterval(Interva);•容器:•1、调用上述的方法,可以手动的使一个Session对象销毁。•2、每一个Session对象都是在服务器端运行的,默认有效的时间为30分钟。•3、可以通过代码或者配置来指定Session有效的时间。会话超时阶段•定义:来自参与会话的客户机的两个连续请求之间的最长允许空闲时间称为会话超时阶段session-configsession-timeout10/session-timeout/session-configsession.setMaxInactiveInterval(10);HttpSession接口•Session接口•setAttribute(String,Object)•getAttribute(String)•getID();•getMaxInactiveInterval()•setMaxInactiveInterval(int)•isNew()•invalidate()•getAttributeNames()-Enumeration•removeAttribute(Stringname)Session示例•登录–IndexServlet及LoginActionServlet•//在LoginAction中:•//根据用户名与密码,查找用户是否合法•if(合法){•Useruser=…;•HttpSessionsession=request.getSession();•session.setAttribute(“user”,user);•}else{•//让用户重新登录•}•//在index中•HttpSessionsession=request.getSession();•Useruser=(User)session.getAttribute(“user”);•if(user!=null){//用户已登录成功•//转向显示用户信息页面•}else{•//转向用户登录页面•}Session示例•购物车设计–货物项:CatalogItem–项目订单:ItemOrder–购物车:ShoppingCartpublicclassCatalogItme{StringitemID;Stringname;Stringdesc;doublecost;}publicclassItemOrder{CatalogItemitem;intnumItems;}publicclassShoppingCart{ListItemOrderitemsOrdered;publicvoidaddItem(StringitemId){}publicvoidremoveItem(StringitemId){}publicvoidsetNumOrdered(StringitemId,intnumOrdered){}}Session示例•addItempublicvoidaddItem(StringitemID){for(inti=0;iitemOrdered.size();i++){order=(ItemOrder)itemOrdered.get(i);if(order.getItemID().equals(itemID){ItemOrderorder.incrementNumItems();return;}}//新物品项ItemOrdernewOrder=Catalog.getItem(itemID);itemOrdered.add(newOrder);}Session示例•购物车前端实现–显示货物的列表页面,当点击”加入购物车时”,进入显示当前订单页面–当前订单页面OrderPage//关键代码示例HttpSessionsession=request.getSession();ShoppingCartcart=(ShoppingCart)session.getAttribute(“soppingCart”);if(cart==null){cart=newShoppingCart();session.setAttribute(“shoppingCart”,cart);}//获得ItemID,StringitemID=request.getParameter(“itemID”);//调用addItem方法Cart.addItem(itemID);//显示购物车中的所有订单ListitemsOrder=cart.getItemsOrdered();for(…){…}总结•理解并掌握Cookie机制•理解并掌握Session机制•使用Session传递数据,进行会话跟踪
本文标题:java培训之Servlet技术3
链接地址:https://www.777doc.com/doc-958893 .html