Session技术

Session

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

//怎么获取 创建session HttpSession session=request.getSession(); //存入数据 session.setAttribute("name", "Heyley");

//怎么获取 创建session HttpSession session=request.getSession(); //存入数据 session.setAttribute("name", "Heyley");


一、 使用session实现简单的购物车

首先创建主页效果如图:

//获取所有的商品信息 List<Goods> list=gService.findAll(); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type", "text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); for(Goods entity:list){ out.print(entity.getName()+"<a href='/2011-10-251/servlet/BuyServlet?id="+entity.getId()+"'>加入购物车</a>"+"</br>"); }



其次创建显示购物车的页面:

List<Goods> carts=(List<Goods>) request.getSession().getAttribute("carts"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type", "text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); out.print("购买的商品如下:"); for(Goods entity:carts){ out.print(entity.getName()+"</br>"); }


最后写要买商品的servlet

其中doget()中的代码:

//传递的参数获取其值 String rid=request.getParameter("id"); //类型转换 Integer id=Integer.parseInt(rid); //执行查询 Goods entity=gService.findByid(id); //session中获取list HttpSession session=request.getSession(); List<Goods> carts=(List<Goods>) session.getAttribute("carts"); //判断 if(carts==null){ carts=new ArrayList<Goods>(); session.setAttribute("carts",carts); } //添加到集合中 carts.add(entity); response.sendRedirect("/2011-10-251/servlet/ListCartsServlet");



二、 关闭打开浏览器商品还在

如果你打开浏览器点击了几个商品进入购物车里,当你关闭浏览器再打开的时候,你刚才所点击的商品已经没有了,这是所不希望的,所以你要填上这段代码在HttpSession session=request.getSession();之后

//实现关闭浏览器 再打开浏览器 加入购物车的商品 十分钟之内重新打开还在 Cookie cookie=new Cookie("JSESSIONID",session.getId()); cookie.setMaxAge(10*60); cookie.setPath("/2011-10-251"); response.addCookie(cookie);



三、 IE禁用Cookie后的session处理

当禁用cookie时,上面一段代码就起不了作用了,也就是说你关闭浏览器再打开浏览器的时代商品已经没有了

解决方案:URL重写

response. encodeRedirectURL(java.lang.Stringurl)

用于对sendRedirect方法后的url地址进行重写。

//响应到另一个servlet中 String url=response.encodeRedirectURL("/2011-10-251/servlet/ListCartsServlet"); response.sendRedirect(url);

附加:

Session的失效 默认时间是30分钟

Web.xml文件配置session失效时间

<session-config>

<session-timeout>分钟数</session-timeout>

</session-config>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值