java.web大学课件 第六章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JavaWeb开发天津师范大学刘洋第六章Servlet会话(Session)编程会话是什么会话的典型应用Servlet的会话编程会话的底层实现方式演示会话的使用会话是什么请求1请求2请求n…….服务器将唯一的会话ID分配给客户端以跟踪用户会话的典型应用网店中的购物车功能用户权限控制跨Servlet/JSP传递参数已授权用户未授权用户请求请求Servlet会话编程HttpSession对象获取request.getSession(booleancreate)HttpSession接口的主要方法voidsetAttribute(String,Object)ObjectgetAttribute(String)EnumerationgetAttributeNames()voidinvalidate()intgetMaxInactiveInterval()voidremoveAttribute(Stringname)voidsetMaxInactiveInterval(intinterval)Servlet会话编程会话结束浏览器关闭主动关闭会话超时会话的底层实现方式CookiesURL重写会话的底层实现方式URL重写当浏览器不接受Cookie时,仍然可以使用Session在链接后面增加jsessionid参数,例如:/servlet/getUser;jsessionid=431D980051204FC8DC3编程实现out.println(ahref=\);out.println(response.encodeURL(“/servlet/getUser));out.println(\User/a);演示会话的使用HttpSessionsession=request.getSession();Integercounter=(Integer)session.getAttribute(counter);if(counter==null){counter=newInteger(1);}else{counter=newInteger(counter.intValue()+1);}session.setAttribute(counter,counter);session.setMaxInactiveInterval(3600);…out.println(h1使用session的演示/h1);out.println(你已经访问了+counter+次.brbr);演示会话的使用if(session.isNew()){out.println(这是一个新建的Session.brbr);}else{out.println(这不是一个新建的Session.brbr);}out.println(jsessionid:+session.getId()+brbr);…out.println(格式转换以后的LastAccessedTime:+newDate(session.getLastAccessedTime())+brbr);…out.println(格式转换以后的CreationTime:+newDate(session.getCreationTime())+brbr);out.println(MaxInactiveInterval:+session.getMaxInactiveInterval()+秒br);演示会话的使用out.println(br使用Session对象的getAttributeNamesbr);Enumerationenumer=session.getAttributeNames();Stringname=null;while(enumer.hasMoreElements()){name=(String)enumer.nextElement();out.println(Sessionname:+name+br);out.println(Sessionvalue:+session.getAttribute(name)+br);}//session.removeAttribute(counter);//session.invalidate();使用会话实现网络购物车实例流程图displayItems.htmAddShoppingCartServletGetShoppingCartServlet显示错误信息提交添加商品请求添加商品成功添加商品失败CartItempublicclassCartItem{privateStringname;privateintquantity;privatedoubleprice;privateStringid;…publicCartItem(Stringid,Stringname,intquantity,doubleprice){this.id=id;this.name=name;this.quantity=quantity;this.price=price;}……publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicdoublegetPrice(){returnprice;}publicvoidsetPrice(doubleprice){this.price=price;}publicintgetQuantity(){returnquantity;}publicvoidsetQuantity(intquantity){this.quantity=quantity;}publicdoublegetSum(){returnthis.quantity*this.price;}ShoppingCartimportjava.util.ArrayList;importjava.util.Iterator;…publicclassShoppingCart{/***保存所有CartItem对象的容器对象。*/privateArrayListCartItemcart;publicShoppingCart(){cart=newArrayListCartItem();}/***返回包括所有已经购物的商品信息的容器对象。*@return当前的items容器对象*/publicArrayListCartItemgetCart(){returncart;}…/***添加一种商品到购物车中,如果这种商品在购物车中已经存在,*那就修改已有的商品的数量,*反之,构造一个新的CartItem对象添加到items对象中。*@paramitem新增的代表这种商品的对象*/publicvoidaddCartItem(CartItemitem){CartItemoldItem=null;if(item!=null){for(inti=0;icart.size();i++){oldItem=cart.get(i);if(oldItem.getId().equals(item.getId())){oldItem.setQuantity(oldItem.getQuantity()+item.getQuantity());return;}}cart.add(item);}}/***从购物车中,删除商品。*@paramid所删除商品的商品编号*@return删除成功,返回true,反之返回false*/publicbooleanremoveCartItem(Stringid){CartItemitem=null;for(inti=0;icart.size();i++){item=cart.get(i);if(item.getId().equals(id)){cart.remove(i);returntrue;}}returnfalse;}/***计算所购所有商品的总价。*@return商品的总价*/publicdoublegetTotal(){IteratorCartItemit=cart.iterator();doublesum=0.0;CartItemitem=null;while(it.hasNext()){item=it.next();sum=sum+item.getSum();}returnsum;}AddShoppingCartServletHttpSessionsession=request.getSession();ShoppingCartcart=(ShoppingCart)session.getAttribute(shoppingcart);if(cart==null){cart=newShoppingCart();session.setAttribute(shoppingcart,cart);}Stringid=request.getParameter(id);Stringname=request.getParameter(name);Stringquantity=request.getParameter(q);Stringprice=request.getParameter(price);…cart.addCartItem(newCartItem(id,name,Integer.parseInt(quantity),Double.parseDouble(price)));…GetShoppingCartServlet…HttpSessionsession=request.getSession();ShoppingCartcart=(ShoppingCart)session.getAttribute(shoppingcart);…printCartItem(out,cart);…privatevoidprintCartItem(PrintWriterout,ShoppingCartcart){ArrayListCartItemitems=cart.getCart();CartItemitem=null;…for(inti=0;iitems.size();i++){item=items.get(i);out.println(tr);out.println(td+item.getName()+/td);out.println(td+item.getPrice()+元/td);out.println(td+item.getQuantity()+/td);out.println(td+item.getSum()+元/td);out.println(/tr);}…}第六章结束

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功