- 浏览: 256525 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
qingtingchen:
请问下如果只有uid/emial 和密码的话要怎样进行认证
【总结】Spring LDAP整理 -
cylboke:
太给力了,搞了一下午,一直换jar版本,不起作用,用楼主的方法 ...
【学习】spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX) -
hu3625067:
楼主写的很精辟,言简意赅,非常实用
【总结】Spring LDAP整理 -
hu3625067:
写的很精辟,很实用
【总结】Quartz整理 -
Mr小血:
找了好久,终于找到解决办法了,谢谢
formvalidator4.1.3 - 校验时不能自定义向后台传值的BUG问题
这几天写了下JAVA写的COOKIE的DEMO。可能代码有点长,希望对需要的朋友有帮助。
框架:SPRINGMVC
1、首先是购物车工具类 get set方法略
2、购物车其中的一项(工具类)
3、购物车的使用--ACTION类
附、COOKIE工具类
框架:SPRINGMVC
1、首先是购物车工具类 get set方法略
/** * 购物车工具类 */ public class Cart { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(Cart.class); private List<CartItem> items = new ArrayList<CartItem>(); private HttpServletRequest request; private double sumamount;//总计金额 private int sumnumb;//总计数量 public Cart() { } //增加 public void addItem(CartItem item) { if (items.contains(item)) {// 如果购物项已经存在于购物车,累加其购买数量 for (CartItem cItem : items) { if (cItem.equals(item)) { cItem.setAmount(cItem.getAmount() + item.getAmount()); double price = cItem.getSpace().getPrice(); double totalamount = DataUtil.mul(price, cItem.getAmount(),1); cItem.setTotalamount(totalamount); break; } } } else { double price = item.getSpace().getPrice(); double totalamount = DataUtil.mul(price, item.getAmount(),1); item.setTotalamount(totalamount); items.add(item); } //计算总价 sumamount = this.getsumamount(); sumnumb = this.getsumnumb(); } //删除 public void deleteItem(CartItem item) { if (items.contains(item)){ items.remove(item); } //计算总价 sumamount = this.getsumamount(); sumnumb = this.getsumnumb(); } //总价 public double getsumamount(){ double result = 0.0d; for(CartItem cItem: items){ result = DataUtil.sum(result, cItem.getTotalamount()); } return result; } //总数量 public int getsumnumb(){ int result = 0; for(CartItem cItem: items){ result += cItem.getAmount(); } return result; } /** * 序列化 * @return * @throws UnsupportedEncodingException */ public String serialize() throws UnsupportedEncodingException { StringBuilder buffer = new StringBuilder(); for(int i = 0;i<items.size();i++){ String item = items.get(i).toString(); buffer.append(item); buffer.append(";"); } if (buffer.length() > 0) buffer.deleteCharAt(buffer.length() - 1); return buffer.toString(); } /** * 加载购物车 * @param ticketService * @param content * @throws UnsupportedEncodingException */ public void load(TicketService ticketService,String content) throws UnsupportedEncodingException { items.clear(); if (content == null || "".equals(content)) return; else { try { String[] itemsArry = content.split(";"); int sumnumb = 0;//总数量 double sumamount = 0.0;//总计 for (int i = 0; i < itemsArry.length; i++) { String array = itemsArry[i]; String[] strarray = array.split(","); int number = Integer.parseInt(strarray[0].split(":")[1]); int id = Integer.parseInt(strarray[1].split(":")[1]); //double price = Double.parseDouble(strarray[2].split(":")[1]); CartItem item = new CartItem(); item.setAmount(number); Space space = ticketService.findBySpaceId(id); Ticket ticket = ticketService.findById(space.getTicketNo()); space.setTicketName(ticket.getTicketName()); item.setSpace(space); item.setTotalamount(number, space.getPrice());//算小计 items.add(item); sumnumb += number; sumamount = DataUtil.sum(sumamount, item.getTotalamount()); } this.setSumamount(sumamount); } catch (Exception e) { // TODO: handle exception return; } } } //删除所有 public void deleteAll() { items.clear(); } }
2、购物车其中的一项(工具类)
/** * 购物车-一项 * @author shiaj * Dec,2012 */ @SuppressWarnings("serial") public class CartItem implements java.io.Serializable{ private int amount = 1;//数量 private Space space;//商品实体类 private double totalamount;//小计 public CartItem(){} public CartItem(int amount,Space space) { this.amount = amount; this.space = space; } /** * 小计 * @param amount * @param price */ public void setTotalamount(int amount,double price) { this.totalamount = DataUtil.mul(amount, price, 2); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((space == null) ? 0 : space.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; CartItem other = (CartItem) obj; if(this.space.getSpaceNo().equals(other.getSpace().getSpaceNo())){ return true; } return false; } public String toString(){ StringBuffer string = new StringBuffer(); string.append("amount:" + amount + ",id:" + this.space.getSpaceNo() + ",price:" + this.space.getPrice()); return string.toString(); } }
3、购物车的使用--ACTION类
@Controller public class OrderAct extends SessionCart{ @Autowired private TicketService ticketService; public static final String CART_ID = "cookie.cart.id"; /** * 查看购物车 * @param request * @param model * @return */ @RequestMapping(value = "/shoppingcart.jhtml", method = RequestMethod.GET) public String shoppingcart(HttpServletRequest request,ModelMap model){ String flag = this.getCartFlag(request); if(flag == null || !flag.equals("havaReadCookie")){//COOKIE转SESSION //读取COOKIE Cart cart = this.getCart(request); this.setShoppingCartSession(request, cart); } return "WEB-INF/t/cms/www/red/index/shoppingcart.html"; } /** * 加入购物车 * @param request * @param response * @param test * @throws Exception */ @RequestMapping(value = "/addItem.jhtml") public void addItem(HttpServletRequest request, HttpServletResponse response,Space space,Integer amount) throws Exception { System.out.println(space.getSpaceNo()); String flag = this.getCartFlag(request); Cart cart = new Cart(); if(flag == null || !flag.equals("havaReadCookie")){//COOKIE转SESSION //读取COOKIE cart = this.getCart(request); } else{//若SESSION存在 则直接读取SESSION cart = this.getShoppingCartSession(request); } Space newspace = this.ticketService.findBySpaceId(space.getSpaceNo()); Ticket ticket = this.ticketService.findById(newspace.getTicketNo()); newspace.setTicketName(ticket.getTicketName()); CartItem item = new CartItem(amount,newspace); cart.addItem(item); //放入购物车 saveToCookie(response, cart); this.setCartFlag(request, "havaReadCookie"); this.setShoppingCartSession(request, cart); String msg; msg = "{'success':false}"; ResponseUtils.renderJson(response, msg); } /** * 删除某一项 * @param request * @param response * @param test * @throws Exception */ @RequestMapping(value = "/delItem.jhtml") public void Item(HttpServletRequest request, HttpServletResponse response,Space space,Integer amount) throws Exception { String flag = this.getCartFlag(request); Cart cart = new Cart(); if(flag == null || !flag.equals("havaReadCookie")){//COOKIE转SESSION //读取COOKIE cart = this.getCart(request); } else{//若SESSION存在 则直接读取SESSION cart = this.getShoppingCartSession(request); } Space newtest = this.ticketService.findBySpaceId(space.getSpaceNo()); CartItem item = new CartItem(amount,newtest); cart.deleteItem(item); //放入购物车 saveToCookie(response, cart); this.setCartFlag(request, "havaReadCookie"); this.setShoppingCartSession(request, cart); String msg; msg = "{'success':false}"; ResponseUtils.renderJson(response, msg); } /** * 保存cookie */ private void saveToCookie(HttpServletResponse response, Cart cart) throws Exception { CookieUtils.addCookie(response, CART_ID + "01", cart.serialize()); } /** * 购物车的初始化 * * @return CartService */ private Cart getCart(HttpServletRequest request) { Cart cs = null; try { String cartStr = ""; cartStr = CookieUtils.findCookie(request, CART_ID + "01"); cs = new Cart(); if (cartStr != null && !"".equals(cartStr)) { cs.load(ticketService,cartStr); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return cs; } }
附、COOKIE工具类
public class CookieUtils { public static final int MAX_AGE = 60 * 60 * 24 * 7; /** * 添加COOKIE * @param response * @param key * @param value * @throws UnsupportedEncodingException */ public static void addCookie(HttpServletResponse response, String key, String value) throws UnsupportedEncodingException { value = URLEncoder.encode(value, "utf-8"); Cookie cookie = new Cookie(key, value); cookie.setMaxAge(MAX_AGE); cookie.setPath("/"); response.addCookie(cookie); } /** * 删除COOKIE * @param response * @param key */ public static void deleteCookie(HttpServletResponse response, String key) { Cookie cookie = new Cookie(key, ""); cookie.setMaxAge(0); cookie.setPath("/"); response.addCookie(cookie); } /** * 查找COOKIE * @param request * @param key * @return String * @throws UnsupportedEncodingException */ public static String findCookie(HttpServletRequest request, String key) throws UnsupportedEncodingException { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { if (key.equals(cookies[i].getName())) { return URLDecoder.decode(cookies[i].getValue(), "utf-8"); } } } return null; } }
发表评论
-
【总结】JAVA编码日常会忽略的小错误
2016-10-15 15:54 0偏基础的文章,很多都是可能很多coder日常都会遇上的问题。 ... -
【总结】Java基础之String
2016-03-26 15:46 0总结关于String的问题和特点。 1、contains() ... -
【总结】java.util.Date vs. java.sql.Date
2016-03-19 21:06 1726本文总结了java.util.Date和java.sql.Da ... -
【总结】Java基础之Set:HashSet vs. LinkedHashSet vs. TreeSet
2016-02-28 17:24 1755总结平时常用的Collection子接口:Set接口以及其实现 ... -
【总结】Java基础之List:ArrayList vs. LinkedList vs. Vector
2016-02-27 17:41 906总结平时常用的Collection ... -
【总结】Java基础之Map:HashMap vs. LinkedHashMap vs. TreeMap vs. ConcurrentHashMap
2016-02-21 18:17 2391Map是Java最常用的集合类之一。它有很多实现类,我总结了几 ... -
ant
2014-12-29 15:23 0https://ant.apache.org/manual/t ... -
1111111
2014-11-25 22:31 01\ My main work will be focus o ... -
d09
2014-09-22 14:19 02014-09-01 Recently I usually r ... -
【学习】使用Nginx进行多站点配置(初级)
2013-11-13 17:26 1947Nginx ("engine x") 是一 ... -
【学习】Java实现FTP上传功能(FTPClient)
2013-08-21 17:11 2187做项目时遇到的需求如下:本地查询的结果,导出XLS,上传至FT ... -
【问题】java.lang.OutOfMemoryError: Java heap space 解决方法
2013-07-22 16:49 1047项目在做一个功能的时候,发现项目报java.lang.OutO ... -
Axis2+Spring开发时遇到Service注入为空的问题
2013-06-24 17:12 3612需求:在SSI项目中使用Axis2的WEBSERVICE技术。 ... -
SpringMVC与Mybatis整合环境搭建
2013-06-15 23:21 5841Spring与Mybatis整合环境搭建 本文用的jar包 ... -
一个机器同时运行两个TOMCAT
2013-04-19 13:25 1101第一个TOMCAT全部用默认, 改变另一个TOMCAT/CON ... -
网站接入之使用人人网帐号登陆(直接使用OAuth 2.0来授权)
2013-02-20 13:52 1743人人网API不是特别好。 下面是我自己的步骤,希望对需要的人 ... -
JAVA通过SOCKET接收发送数据
2013-01-24 10:24 1570JAVA用SOCKET通信发送数据。::: public ... -
利用java-poi 导出EXCEL表格(STRUTS2形式)
2012-11-05 14:03 3000首先,下载POI JAR包 http://poi.apache ... -
Spring --- java定时器,Spring定时器和Quartz定时器{转}
2012-10-11 09:16 1537在现实生活中,会出现这样的例子,比如烧水,一般烧了20分钟后, ... -
dao 表优化
2011-09-21 10:32 905//列表ticket 底层hql语言 可以去掉一些字段 比如简 ...
相关推荐
通过这个"jsp+servlet写的购物车demo",初学者可以深入理解Web开发中的核心概念和技术,以及如何将它们组合起来创建一个实际的应用。同时,这也是进一步学习Spring MVC、Struts等高级框架的良好基础。
Cookie主要用于存储用户登录状态、购物车信息等临时数据。 Session则是服务器端用来跟踪用户会话的一种技术。当用户登录后,服务器会创建一个Session对象,将用户信息存储在这个对象中,并为该Session分配一个唯一...
在IT行业中,购物车功能是电子商务网站或应用程序的核心组成部分,它允许用户选择商品并暂时存储在虚拟购物车内,以便后续结账。在这个“购物车案例”中,我们可能看到一个简单的实现,它涵盖了一些基本的编程概念和...
"cookie_demo2.zip"这个压缩包文件似乎包含了一个关于Cookie使用的示例,特别是关注于Cookie的生命周期。接下来,我们将深入探讨Cookie、Session以及它们生命周期的相关知识点。 **1. Cookie的基本概念** Cookie是...
ServletCookie DEMO是一个示例项目,它展示了在Java Web开发中如何使用Servlet和Cookie进行...通过分析和实践这个DEMO,开发者可以更深入地理解Servlet和Cookie的工作原理,以及如何在Java Web应用中有效地利用它们。
Cookie通常用于会话管理、个性化体验、购物车功能等。 **中文处理** 在Cookie中处理中文字符可能会遇到编码问题,因为不同的系统和浏览器可能使用不同的字符编码标准。常见的编码格式有ASCII、UTF-8、GBK等。如果...
为了解决这个问题,服务器会为每个用户创建一个唯一的Session ID,并将其保存在客户端(通常是Cookie),同时在服务器端存储与该ID关联的数据,如购物车内容。每当客户端发送请求时,它都会将Session ID一并发送,...
Session是服务器端存储的一个数据结构,用于保存用户特定的信息,比如用户的登录状态、购物车内容等。当用户首次访问网站并创建Session时,服务器会为该用户分配一个唯一的Session ID,并通过Cookie将其返回给浏览器...
在Web开发中,Cookie是一种非常重要的技术,它用于在客户端和服务器之间传递状态信息。Cookie机制主要用于实现用户登录...在`cookie_demo`这样的项目中,开发者可以学习和实践这些概念,以加深对Cookie工作原理的理解。
- Cookie是客户端存储数据的方式,常用于临时保存用户偏好设置或者购物车信息。 7. **JSP标签库**: - JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)可以简化JSP页面的编写,提高...
至于`friend_demo`,可能是演示或示例代码,展示了如何实现购物车功能,尤其是涉及好友推荐或社交元素的场景。 总结来说,购物车的实现涉及到Web开发的核心技术,如session和cookie管理,同时需要数据库支持来持久...
【基于JAVA的网上图书超市】是一个使用Java编程...总体来说,【基于JAVA的网上图书超市】是一个集成了用户管理、商品展示、购物车、搜索、订单处理等功能的完整电商系统,体现了Java Web开发中的多项关键技术与实践。
通过分析这个demo,开发者可以学习如何在实际项目中构建和优化电子购物车功能,提升电商系统的整体性能和用户体验。 综上所述,电子购物车是电商系统不可或缺的一部分,它涵盖了用户交互、价格计算、促销策略、数据...
6. **状态管理**:购物车中的商品信息需要在用户浏览过程中保持,这可能需要用到session或者cookie来管理用户购物车的状态,或者在后端实现状态的持久化。 7. **计算逻辑**:购物结算的核心是计算功能,包括单个...
JavaWeb Servlet版图书商城Demo是一个基于JavaWeb技术的在线图书销售平台示例,适用于那些已经对JavaWeb有基本了解的学习者。这个项目旨在提供一个实际的、可运行的应用程序,帮助开发者理解如何在Web环境中使用...
这个系统包括了用户管理、商品浏览、购物车、订单处理、支付接口等多个核心功能模块,是学习和实践Java Web开发的理想案例。系统文档、源代码以及配套的视频教程共同构成了一个完整的教学资源包,适合于进行毕业设计...
使用 `Session` 和 `Cookie` 实现购物车 #### 4.1 使用 `Session` 存储购物车信息 可以使用 `HttpSession` 对象来存储用户的购物车信息。当用户添加商品到购物车时,可以创建一个 `HashMap` 来存储商品ID和数量,...
购物车数据可能存储在session或者cookie中,以便跨页面保持状态。 4. **订单模块**:用户提交订单后,系统需要计算总价,检查库存,生成订单号,并存储订单信息。同时,可能还需要发送确认邮件或短信给用户。 5. **...
COOKIE是一个小的文本文件,保存在客户端电脑上,用于存储一些信息,例如登录信息、购物车信息等。HttpClient提供了COOKIE处理机制,允许我们轻松地处理COOKIE问题。 HttpClient是一个非常有用的工具,帮助我们轻松...
在网上书店中,用户登录状态的保持和购物车功能可能会用到Session和Cookie。Session用于存储用户在服务器端的状态信息,而Cookie则是在客户端存储的小型数据,通常用于跟踪用户行为或保存登录状态。 7. **安全机制...