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> <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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值