文档章节

Session技术

 杨勇汉
发布于 2015/02/01 14:05
字数 627
阅读 7
收藏 0

 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>

本文转载自:http://blog.csdn.net/rhljiayou/article/details/6905322

粉丝 2
博文 69
码字总数 0
作品 0
东城
私信 提问
Resin 跨服务器的session传递

Resin 跨服务器的session传递 --By oldjavaman 1. 基于文件的session持久化技术 Seesion能够被跨服务器持久化, 包含我们的web应用的Class发生变化, 譬如在开发期间,使用基于文件的持久化S...

嘻哈开发者
2015/05/23
379
0
JavaWeb初识 Session绘画跟踪技术

Cookie绘画跟踪技术有一个很大缺点:信息不安全信息是暴露在服务器中的怎么办所以就有了Session技术 Session技术的好处:隐藏用户信息,信息不再存储在客户端而是在服务器,客户端拿到只是服...

死瘦宅
05/23
0
0
PHP学习10——Cookie和Session技术

主要内容: Cookie技术 创建cookie 查看cookie 读取cookie 用cookie记录访问时间和次数 删除cookie cookie的生命周期 Session技术 session工作原理 session控制 session的存储结构 传递sessi...

乌云上
2018/08/08
0
0
分布式Session共享解决方案

image.png Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复...

架构之路
2017/12/13
0
0
Python全栈 Web(Flask框架、cookie, session)

cookie: 什么是cookie? 是一种数据存储技术 将一段文本保存在客户端的一种技术 并且可以长时间保存 cookie的使用场合: 记住密码 搜索关键词 在Flask使用cookie 使用 响应对象 来保存cooki...

巴黎香榭
2018/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

高级技术题整理

1. 为什么等待和通知是在 Object 类而不是 Thread 中声明的? 一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手...

泉天下
11分钟前
1
0
Elasticsearch

1 、下载 下载地址:https://www.elastic.co/downloads/past-releases 2 、安装 elasticsearch无需安装,解压即用。 3.运行 进入elasticsearch/bin目录,可以看到下面的执行文件: 双击运行 ...

少年已不再年少
11分钟前
4
0
Spring Boot 2.X(七):Spring Cache 使用

Spring Cache 简介 在 Spring 3.1 中引入了多 Cache 的支持,在 spring-context 包中定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 两个接口来统一不同......

朝雾轻寒
13分钟前
2
0
java路径问题

在Java中有几种常见获取文件路径的方法,此处演示下用法和效果。 测试项目目录结构如右图: 1、使用File类 File file = new File("");// Java项目中-->D:\WorkSoftware\Workspace\EclipseP...

随心の随缘
16分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部