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.String url)

   用于对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>

转载于:https://my.oschina.net/u/139546/blog/374124

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值