IE禁用Cookie后解决方案:URL重写

购物车案例《IE禁用Cookie后》

购物界面ShowBook.servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); //先死后活
out.println("<h1>欢迎购买</h1>"); out.println("oracle书<a href='/myCart/BuyBookCl?id=3&name=oracle' >点击购买</a></br>"); //取出Db
ArrayList<Book> mydb=Db.getDb(); //访问一些session
request.getSession(); for(Book book:mydb){
String url=response.encodeURL("/myCart/BuyBookCl?id="+book.getId()); //我们希望href ="/myCart/BuyBookCl?id=1&"
out.println(book.getName()+"----"+book.getPrice()+"<a href='"+url+"' >点击购买</a></br>");
} }

BuyBookCl.servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
@SuppressWarnings("unused")
PrintWriter out = response.getWriter();
//request.getAttribute(name)接受的servlet与本身(request里面放置的属性) //浏览器发过来的(http协议相关的) String id=request.getParameter("id");
Book bookinfo=Db.getBookById(id);
HttpSession session=request.getSession(); HashMap<String,Book> hm=(HashMap<String,Book>)session.getAttribute("myBooks");
//如果第一次购物al=null
if(hm==null){
hm=new LinkedHashMap<String,Book>();
Book book=new Book();
book.setId(id);
book.setName(bookinfo.getName());
book.setNum(1);
hm.put(id,book);
//al放到session中
session.setAttribute("myBooks", hm);
}else{
//判断hm中是否有该书
if(hm.containsKey(id)){
//表示购买过一次
//取出
Book book=hm.get(id);
int bookNum=book.getNum();
book.setNum(bookNum+1);
}else{
Book book=new Book();
book.setId(id);
book.setName(bookinfo.getName());
book.setNum(1);
hm.put(id,book);
}
//更新
session.setAttribute("myBooks", hm);
}
//跳转到购物车
request.getRequestDispatcher("/ShowMyCart").forward(request, response);
}

ShowMyCart.servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); HashMap<String,Book> myBooks=(HashMap<String,Book>)request.getSession().getAttribute("myBooks"); out.println("你的购物车有以下书籍:</br>");
//out.println(myBooks); //遍历hashMap
Iterator iterator=myBooks.keySet().iterator(); while(iterator.hasNext()){ String key=(String)iterator.next(); Book book=myBooks.get(key);
out.println(book.getName()+"----"+book.getNum()+"</br>");
} out.println("购物车的总价是"); //这里我们也需要地址重写
String url=response.encodeURL("/myCart/ShowBook"); out.println("<a href='"+url+"'>返回购物大厅</a>");
}

  

IE禁用Cookie后的session处理的更多相关文章

  1. 浏览器禁用Cookie后的Session处理

    1. 实现购物车, 可以基于Cookie, 也可以基于Session, 若服务器性能较差, 可以考虑基于Cookie实现购物车 2. 解决方案: URL重写 把用户可能点的每一个超链接后面,都跟上用户 ...

  2. Asp.Net 禁用cookie后使用session

    原文地址:http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/using-cookie-less-session-in-Asp-Net/ H ...

  3. php 会话控制(禁用cookie后session为什么会失效?)

    首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...

  4. 浏览器禁用cookie后php如何保持session会话-use_trans_sid机制

    原文:浏览器禁用cookie后php如何保持session会话-use_trans_sid机制 为防止浏览器禁用cookie导致服务器会话无法保持,php开发了一个机制,该机制开启后,浏览器发起请求后 ...

  5. 关于PHP中浏览器禁止Cookie后,Session能使用吗?

    sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...

  6. php在客户端禁用cookie时让session不失效的解决方法

    cookie固然好,不过有些客户端浏览器会禁用cookie,这就会导致你所依赖cookies的程序会失效或出错,那么若真出现用户关闭cookies的情况,PHP应该如何再次使用session?方法还是 ...

  7. 禁止COOKIE后对SESSION的影响

    一.理解SESSION机制 简单来说:每一个SESSION都有一个唯一的session_id , 默认情况下,session_id存储在客户端(默认COOKIE['PHPSESSID']), 在使用S ...

  8. 禁用cookie后

    服务器为某个访问者创建一个内存区域,这个就是所谓的session,这个区域的存在是有时间限制的,比如30分钟,这块区域诞生的时候,服务器会给这个区域分配一个钥匙,只有使用这个钥匙才能访问这个区域,这个 ...

  9. PHP--浏览器禁用cookie后,怎么使用session

    sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...

随机推荐

  1. ArrayList实现线程的几种方法

    第一种.给方法名加synchronized Public synchronized void method(){ //-. } 第二种 New synchronized arraylist(); 第三 ...

  2. ASP.NET MVC 扩展HtmlHelper类方法

    1.扩展HtmlHelper类方法ShowPageNavigate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  3. 【USACO 1.5】SuperPrime Rib

    /* TASK: sprime LANG: C++ SOLVE: dfs,后面每增加一位,判断当前是否为素数. 第一位不能为0 */ #include<cstdio> int n; voi ...

  4. centos 开启VNC

    安装软件包(有yum源安装的,不采用源码安装) yum -y install vnc vnc-server 安装成功后,配置如下: [root@localhost ~]# vncserver #设置 ...

  5. SPOJ GSS2 Can you answer these queries II

    Time Limit: 1000MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Description Being a ...

  6. Windows Directory ACL Security Check By ACL Baseline

    catalog . Windows NTFS ACL(MAC) Permission . How the System Uses ACLs . 服务器不安全ACL配置带来的攻击向量 . NTFS AC ...

  7. crawler: 常用的一些工具

    phantomjs, Headless的WebKit Driver,意味着可以无需GUI,完全模拟Chrome/Safari的操作. casperjs(基于phantomjs的好用封装),zombie ...

  8. pack、unpack自制二进制“数据库”

    引言 pack.unpack函数,如果没有接触过socket,这个可能会比较陌生,这两个函数在socket交互的作用是组包,将数据装进一个二进制字符串,和对二进制字符串中的数据进行解包,这个里面有好多 ...

  9. CF 84D Doctor(二分)

    题目链接: 传送门 Doctor time limit per test:1 second     memory limit per test:256 megabytes Description Th ...

  10. iOS 简单的动画自定义方法(旋转、移动、闪烁等)

    #define kDegreesToRadian(x) (M_PI * (x) / 180.0) #define kRadianToDegrees(radian) (radian*180.0)/(M_ ...