`
旭少版
  • 浏览: 83382 次
  • 性别: 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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics