`
旭少版
  • 浏览: 85394 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Struts2+cookie实现的购物车

阅读更多
package com.book3un.action;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import javax.servlet.http.Cookie;
import org.apache.struts2.ServletActionContext;
import com.book3un.action.model.GoodsModel;
import com.book3un.bookpresent.biz.BooksLogic;
import com.book3un.common.actions.BaseAction;
import com.book3un.dataentity.Booksinfo;
import com.opensymphony.xwork2.ActionContext;
/**
 * @author:王浩然
 * @创作时间:2008-8-1 上午09:17:07
 * @E-mail:wanghaoran04141205@163.com
 * @说明:
 * @最后一次修改时间:
 * @修改人:
 */
public class GoodsAction extends BaseAction {
 private static final long serialVersionUID = 6735634600866791768L;
 private GoodsModel gm = null;
 public Object getModel() {
  if (gm == null) {
   this.gm = new GoodsModel();
  }
  return gm;
 }
 private BooksLogic bl = null;
 public void setBl(BooksLogic bl) {
  this.bl = bl;
 }
 public String execute() {
  
  return this.SUCCESS;
 }
 public String clearUpCar() {
  // 清空cookies
  Cookie cookies[] = ServletActionContext.getRequest().getCookies();
  System.out.println("now in clear");
  if (cookies != null && cookies.length > 0) {
   int length = cookies.length;
   for (int i = 0; i < length; i++) {
    cookies.setMaxAge(0);
    ServletActionContext.getResponse().addCookie(cookies);
   }
  }
  // 清空session
  ActionContext.getContext().getSession().put(
    ServletActionContext.getRequest().getRemoteAddr(), null);
  
  return "toCar";
 }
 public String putInOrGoShoppingCar() {
  //得到session
  Map session = ActionContext.getContext().getSession();
  // 这里用session做了个标记,当用户第一次查看购物车时,读出所有的cookie,然后放到session里,以后用户再查看或进入购物车时,
  //就直接从session里拿数据,而不用再读cookie了
  if (session.get("flag") == null) {
   // 如果用户是购买了书,那么bookID就一定有值,我们就把这本书加进cookie
   if (gm.getBookId() != null && gm.getBookId() > 0) {
    String bookId = gm.getBookId().toString();
    Cookie cookie = new Cookie(bookId, bookId);
    cookie.setMaxAge(31536000);// 一年
    ServletActionContext.getResponse().addCookie(cookie);
   }
   // 读cookie
   Cookie cookies[] = ServletActionContext.getRequest().getCookies();
   
   if (cookies != null && cookies.length > 0) {
    int length = cookies.length;
    for (int i = 0; i < length; i++) {
     Cookie coo = cookies;
     // 我们得对coo.getName进行判断,如果是书的话就执行下面这两句话
     // 得到书的信息
     if (coo.getName().length() <= 6) {
      // Booksinfo
      // booksinfo=bl.getBooksinfo(Long.parseLong(coo.getName()));
      // gm.getCol().add(booksinfo);
      Booksinfo booksinfo = new Booksinfo();
      booksinfo.setName(coo.getName());
      //放到集合里,用来显示
      gm.getCol().add(booksinfo);
     }
    }
   }
   //把从cookie里读出的数据放到session里,
   session.put(ServletActionContext.getRequest().getRemoteAddr(), gm
     .getCol());
   //设置标记,表示已经读过cookie了,下次直接从session里取
   session.put("flag", "havaReadCookie");
  } else {
   //从session里取出数据,
   Collection col = (Collection) session.get(ServletActionContext
     .getRequest().getRemoteAddr());
//    如果用户是购买了书,那么bookID就一定有值,我们就把这本书加进cookie
   if (gm.getBookId() != null && gm.getBookId() > 0) {
    String bookId = gm.getBookId().toString();
    Cookie cookie = new Cookie(bookId, bookId);
    cookie.setMaxAge(31536000);// 一年
    ServletActionContext.getResponse().addCookie(cookie);
    // Booksinfo booksinfo=bl.getBooksinfo(Long.parseLong(bookId));
    Booksinfo booksinfo = new Booksinfo();
    booksinfo.setName(bookId);
    if (col == null) {
     col = new ArrayList();
     col.add(booksinfo);
    }
    
    col.add(booksinfo);
   }
   gm.setCol(col);
   session.put(ServletActionContext.getRequest().getRemoteAddr(), gm
     .getCol());
  }
  // userId是当前用户的ID
  return "toShoppintCar";
 }
 public String prepareData() {
  // if(gm.getBookId()!=null&&gm.getBookId()>0){
  // gm.setGoodsInfo(bl.getBooksinfo(gm.getBookId()));
  // }
  Booksinfo bookinfo = new Booksinfo();
  bookinfo.setId(gm.getBookId());
  gm.setGoodsInfo(bookinfo);
  bookinfo.setName("javao1");
  return "toFavorategoods";
 }
}


shoppingCar.jsp
<%@ page contentType="text/html;charset=GB18030"%>
<%@ taglib prefix="w" uri="/struts-tags"%>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
  <title>购物车</title>
 </head>
 <body>
 <form name="form" action="clearUpAction.book3un" method="post">
  <w:iterator value="col">
   book:<w:property value="name"/> 
  </w:iterator>
  <br>
  
  <input   type="submit" value="清空" >
 </form>
 
 </body>
 
</html>




bookList.jsp
<%@ page contentType="text/html;charset=GB18030"%>
<%@ taglib prefix="w" uri="/struts-tags"%>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
  <title>图书展示页面</title>
 </head>
 <body>
 <form >
  java011  <a href="goodsAction.book3un?bookId=123">收藏</a>&nbsp;<a href="shoppingCarAction.book3un?bookId=123">放入购物车</a>
 </form>
 
 </body>
 
</html>


  <action name="clearUpAction"  class="goodsAction" method="clearUpCar">
   <result name="toCar">/book/shoppingCar.jsp</result>
   <interceptor-ref name="defaultStack"></interceptor-ref>
  </action>
  <action name="goodsAction"  class="goodsAction" method="prepareData">
   <result name="toFavorategoods">/book/favorateGoods.jsp</result>
   <interceptor-ref name="defaultStack"></interceptor-ref>
   
  </action>
  <action name="shoppingCarAction"  class="goodsAction" method="putInOrGoShoppingCar">
   
   <result name="toShoppintCar">/book/shoppingCar.jsp</result>
   <interceptor-ref name="defaultStack"></interceptor-ref>
  </action>
分享到:
评论

相关推荐

    struts2+cookies实现购物车

    在IT领域,特别是Web开发中,使用Struts2框架结合cookies来实现购物车功能是一种常见的技术方案。本文将深入解析如何通过Struts2与cookies协同工作,构建一个实用且高效的在线购物车系统。 ### Struts2简介 Struts...

    struts实现购物车+数据库

    在这个"struts实现购物车+数据库"项目中,我们将会深入探讨如何利用Struts框架来创建一个网上订餐系统,其中包含购物车功能以及与SQL Server 2005数据库的交互。 首先,我们要理解Struts的工作原理。Struts通过拦截...

    基于Struts技术的购物车的实现

    最后,为了实现购物车的持久化,我们可以考虑在用户会话结束时将购物车内容保存到数据库,或者使用cookie在用户下次访问时恢复购物车状态。这需要在session过期或用户登出时执行相应的逻辑。 总结起来,基于Struts...

    JSP+Struts2开发当当购书网源代码

    购物车功能的实现往往涉及到状态管理,这可能涉及到Cookie或Session。当用户决定结算时,系统会验证用户身份,生成订单,并将订单信息持久化到数据库。这一系列复杂的业务流程在Struts2的Action和JSP的协同工作下...

    struts+hibernate实现的网络购物系统.zip

    购物车状态可以存储在session或cookie中,Struts处理用户的购物车操作。 4. 订单处理:生成订单、支付处理、订单状态跟踪。Struts控制器可以调用业务服务完成这些流程,而Hibernate用于处理订单和支付相关的数据库...

    struts2+spring2.54+hibernater3.1最新组合

    3. **购物车**:使用Session或Cookie存储用户选择的商品,处理添加、删除和修改数量等操作。 4. **订单处理**:Spring服务层处理订单创建、支付和状态更新,同时利用Hibernate处理订单与书籍之间的关联关系。 5. **...

    标签、脚本、Struts写购物车

    本项目中,你分享了三种不同的实现购物车的方法,这可能包括基于标签(Tag)、脚本语言(如JavaScript或jQuery)以及Struts框架的实现。下面我们将详细探讨这些技术及其在构建购物车功能中的应用。 首先,**标签...

    Jsp+JavaBean+servlet购物车

    3. **存储购物车信息**:由于此项目没有直接使用数据库,购物车信息可能被临时存储在Session或Cookie中。Session在服务器端,能存储大量数据,而Cookie在客户端,存储量有限但易于实现。 4. **响应更新**:Servlet将...

    myeclipse+struts+jsp网上书店13

    7. Session和Cookie的使用:存储用户会话信息,实现购物车功能。 通过学习和实践"myeclipse+struts+jsp网上书店13",开发者不仅可以深入理解Java Web开发流程,还能提升在MVC框架下进行项目开发的能力,为后续的...

    struts2 课程设计

    使用Struts2,我们可以定义多个Action来对应这些操作,通过session或cookie存储购物车数据。同时,JS可以用于前端交互,提供实时的反馈和验证。 3. **我的订单**:用户查看订单历史、确认支付和跟踪物流等功能,...

    jsp+servlet写的购物车demo

    3. **Cookie与Session**:在购物车应用中,可能用Cookie存储用户的选择,或者使用Session保持用户的购物车状态。 4. **转发与重定向**:Servlet中的`RequestDispatcher.forward()`和`Response.sendRedirect()`方法...

    网上书城系统(Struts+Hibernate+Mysql).zip

    1. 用户认证与授权:使用session和cookie管理用户登录状态,实现权限控制。 2. 安全性:对敏感信息如密码进行加密存储,防止SQL注入和XSS攻击。 3. 性能优化:合理设计数据库表结构,使用索引,优化查询语句,减少...

    网上书城struts+jsp+SqlServer源代码

    购物车状态保存在服务器端,可能使用session或cookie实现,Struts处理购物车操作,SQL Server记录用户订单。 4. 订单处理:结账、支付、订单状态跟踪。涉及到支付网关集成,可能使用第三方API,订单信息存储在SQL ...

    网上书城 jsp+struts+spring

    【标题】"网上书城 jsp+struts+spring"是一个基于Java技术栈的Web应用程序,主要用于实现在线书店的功能。这个项目将jsp(JavaServer Pages)用于视图展示,Struts作为MVC(模型-视图-控制器)框架处理业务逻辑,而...

    struts2中request和session的获取

    在Struts2框架中,对request和session的管理和获取是实现Web应用中用户交互和状态维护的重要手段。本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 ...

    struts2网上商店

    购物车状态需要在多个页面间保持,可以使用session或cookie实现。 4. 订单模块:创建订单,支付处理。支付部分可能涉及到第三方支付接口的集成,如支付宝或微信支付。 5. 后台管理模块:管理员对商品、订单进行...

    STRUTS2获得session和request

    如登录状态、购物车信息等,它通过在服务器端存储一个唯一标识符(通常为一个随机字符串),并在每次请求时将这个标识符通过cookie或URL重写等方式传递回服务器,从而实现跨请求的数据共享。 ### STRUTS2中获取...

    简单session购物车

    "简单session购物车"是一个基于Java Web技术实现的示例,它利用了Struts框架和Session来实现一个基本的购物车功能。下面我们将深入探讨这个主题。 首先,我们来理解什么是Session。Session是在服务器端保存用户状态...

    C2C交易网站 jsp+struts

    3. 会话管理:使用Cookie和Session来跟踪用户的登录状态和购物车信息,确保用户在不同页面间的操作一致性。 4. 模板引擎:如FreeMarker或Velocity,可以生成更复杂的HTML页面,提高代码的可读性和复用性。 5. ...

Global site tag (gtag.js) - Google Analytics