Session
    *Cookie基于客户端,不安全,并且大小和个数的限制。
    *Session域对象,范围一次会话范围,存个人相关的数据。
    *setAttribute(String name,Object value);
    *Object getAttribute(String name);
    *String getId() 获取session的唯一的ID.
    * void invalidate()   销毁session
 
 
Session(*****)
    session的追踪 通过jsessionid=''在url中传送到服务器,
    session的创建和销毁
        第一次访问时 request.getSession(),创建session
    销毁:
        1,非正常关闭服务器
        2.sesion的过期,默认30分钟
        <session-config>
            <session-timeout>30</session-timeout>
        <session-config>
        3.通过调用session.invalidate()  手动销毁session
 
 
Servlet中这样处理页面的加入购物车请求
 
// 获取请求参数
           String id = request.getParameter( "id");
           String[] names = new String[] { "手电筒", "电话" , "电视" , "冰箱" , "手表" };
            // 把id翻译成名称
            int idx = Integer. parseInt(id);
           String name = names[idx - 1];
            // 从Session中获取购物车,先获取session
           HttpSession session = request.getSession();
            // 获取购物车
           Map<String, Integer> cart = (Map<String, Integer>) session
                     .getAttribute( "cart");
            // 通过cart来判断是否是第一次访问
            if (cart == null) {
                cart = new HashMap<String, Integer>();
                cart.put(name, 1);
                session.setAttribute( "cart", cart);
 
           } else {
                 // 不是第一次访问;判断是否包含该商品
                 if (cart.containsKey(name)) {
 
                      // 取取数量 加一
                     Integer count = cart.get(name);
                     count++;
                     cart.put(name, count);
                      // 再保存到session中;
                     session.setAttribute( "cart", cart);
                } else {
                      // 不包含
                     cart.put(name, 1);
                     session.setAttribute( "cart", cart);
                }
           }
            // 继续购物,去结算
           response.setContentType( "text/html;charset=UTF-8");
           response.getWriter()
                     .write( "<h3><a href='/JSP/session/CartList.jsp'>继续购物</a></h3> <h3><a href='/JSP/session/Pay.jsp'>去结算</a></h3>");
 
 
 
 
结算页面这样写
<%
//获取购物车
Map<String,Integer> cart=(Map<String,Integer>)request.getSession().getAttribute("cart") ;
 
if(cart!=null ){
//循环遍历
Set<String>keys=cart.keySet();
//循环keys,拿到商品的名称
for(String key:keys)
{
%>
<h2> 亲,您购买的商品是: <%=key %>,数量为: <%=cart.get(key) %></h2 >
 
<%
}
}
else{
%>
 
<h3> 亲,您还没有购买任何商品,请您去 <a href ='CartList.jsp'>败家</ a></ h3>
<%
}
 
 %>

java中sesion的更多相关文章

  1. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

  2. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  5. Java中常用集合操作

    一.Map 名值对存储的. 常用派生类HashMap类 添加: put(key,value)往集合里添加数据 删除: clear()删除所有 remove(key)清除单个,根据k来找 获取: siz ...

  6. java中的移位运算符:<<,>>,>>>总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  7. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  8. Java中的进程和线程

     Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...

  9. Java中的进程与线程(总结篇)

    详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...

随机推荐

  1. @property and retain, assign, copy, nonatomic解析

    nonatomic vs. atomic - "atomic" is the default. Always use "nonatomic". I don't ...

  2. Redis简介及3.0.2编译安装

    由于项目需要Redis作为内存数据库,所以也开始搞Redis~ Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).l ...

  3. Spark作业调度

    Spark在任务提交时,主要存在于Driver和Executor的两个节点. (1)Driver的作用: 用于将所有要处理的RDD的操作转化为DAG,并且根据RDD DAG将JBO分割为多个Stage ...

  4. PLSQL_性能优化系列08_Oracle Insert / Direct Insert性能优化

    2014-09-25 Created By BaoXinjian

  5. myBatis获取批量插入数据的主键id

    在myBatis中获取刚刚插入的数据的主键id是比较容易的 , 一般来说下面的一句话就可以搞定了 , 网上也有很多相关资料去查. @Options(useGeneratedKeys = true, k ...

  6. C++学习37 string字符串的访问和拼接

    访问字符串中的字符 string 字符串也可以像字符串数组一样按照下标来访问其中的每一个字符.string 字符串的起始下标仍是从 0 开始.请看下面的代码: #include <iostrea ...

  7. cshell学习

    一. 文件的读写执行: 1)读:可以显示该文件的内容 2)写:可以编辑或者删除它 3)执行:如果该文件是一个shell脚本或者程序. 如果希望一次设置目录下所有文件的权限,可使用:chmod 644 ...

  8. 搭建一个springmvc helloworld程序

    1.加jar包,需要8个,从springframework里面选 logging core aop context expression bean web webmvc 2.配置web.xml,在文件 ...

  9. 基于spring-redis发布订阅模式的实现

    redis配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  10. [ActionScript 3.0] AS3.0 水面波纹效果

    import flash.geom.Point; import flash.display.BitmapData; import flash.filters.DisplacementMapFilter ...