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. 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4

    以下是使用mongo-java-driver3.0.2.jar和mongodb3.0.4在java代码中的用户验证: ServerAddress sa = new ServerAddress(host ...

  2. scala高级内容(二) - Implicit

    一. Implicit关键字 隐士转换 (1)隐士转换函数:用implicit修饰的,只有一个参数的函数.他会被自动执行,来把一个值转换成另一个 class RichFile(val f:File){ ...

  3. FindViewByMe插件

    FindViewByMe 是一个自动生成 FindViewById 代码的 IDEA/Android Studio 插件, 支持 Activity.Fragment 和 ViewHolder 中的 f ...

  4. spark基础练习(未完)

    1.filterval rdd = sc.parallelize(List(1,2,3,4,5))val mappedRDD = rdd.map(2*_)mappedRDD.collectval fi ...

  5. Accounting_权责发生制和收付实现值的区别(概念)

    2014-07-11 BaoXinjian

  6. NeHe OpenGL教程 第二十九课:Blt函数

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. M2M

    1, M2M (数据算法模型) M2M是将数据从一台终端传送到另一台终端,也就是机器与机器(Machine to Machine)的对话.   M2M简介 但从广义上M2M可代表机器对机器(Machi ...

  8. Apache Thrift学习之二(基础及原理)

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部署,并且 ...

  9. Objective-C: 字符串NSString与NSMutableString

    字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,但用法却与之还是有很大的不同,也许是因为OC的语法就 ...

  10. DimDate

    CREATE TABLE [dbo].[DimDate]( [DateKey] int NOT NULL , [FullDate] DATE NOT NULL , [MonthNumberOfYear ...