public class GoodsAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private HttpSession session;
private List<Book> goodslist;
private Book book;
public String searchList(){
request = ServletActionContext.getRequest();
session=request.getSession();
if(session.getAttribute("flag")==null){
goodslist = (ArrayList<Book>)session.getAttribute(request.getRemoteHost());
//System.out.println("第一次: "+request.getRemoteHost());
session.setAttribute("flag", "hasReadCookies");
goodslist = readCookies();
session.setAttribute(request.getRemoteHost(), goodslist);
}else{
goodslist = (List<Book>)session.getAttribute(request.getRemoteHost());
}
return "success";
}
public String buyBooks(){
if(book!=null && book.getId()!=0){
Cookie coo = new Cookie("book"+book.getId(),book.getBookName());
coo.setMaxAge(315360000);
ServletActionContext.getResponse().addCookie(coo);
session = getRequest().getSession();
goodslist = readCookies();
session.setAttribute(getRequest().getRemoteHost(), goodslist);
session.setAttribute("flag", "hasReadCookies");
}
return searchList();
}
public String cleanShoppingCart(){
cleanCookies();
cleanSession();
return "success";
}
private List<Book> readCookies(){
Cookie[] cookies = getRequest().getCookies();
List<Book> templist = new ArrayList<Book>();
if(cookies!=null && cookies.length>0){
int clen=cookies.length ;
for(int i=0;i<clen;++i){
Cookie coo = cookies[i];
String tbookId = coo.getName();
if(tbookId.indexOf("book")!=-1){
String tbookName= coo.getValue();
Book temp = new Book();
temp.setBookName(tbookName);
String sint = tbookId.substring(tbookId.indexOf("book")+"book".length());
System.out.println(sint);
temp.setId(Integer.parseInt(sint));
templist.add(temp);
}
}
}
return templist;
}
private void cleanCookies(){
request = ServletActionContext.getRequest();
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length>0){
int clen = cookies.length;
for(int i =0 ;i<clen;++i){
Cookie coo = cookies[i];
coo.setMaxAge(0);
ServletActionContext.getResponse().addCookie(coo);
}
}
}
private void cleanSession(){
request = ServletActionContext.getRequest();
session = request.getSession();
session.setAttribute(request.getRemoteHost(), null);
session.setAttribute("flag", null);
}
public List<Book> getGoodslist() {
return goodslist;
}
public void setGoodslist(List<Book> goodslist) {
this.goodslist = goodslist;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public HttpServletRequest getRequest(){
return ServletActionContext.getRequest();
}
}
struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="shopping" namespace="/" extends="struts-default">
<action name="buybook" class="com.tanke.shopping.action.GoodsAction" method="buyBooks">
<result>/goodslist.jsp</result>
</action>
<action name="show" class="com.tanke.shopping.action.GoodsAction" method="searchList">
<result>/goodslist.jsp</result>
</action>
<action name="cart" class="com.tanke.shopping.action.GoodsAction" method="searchList">
<result>/shopcart.jsp</result>
</action>
<action name="clean" class="com.tanke.shopping.action.GoodsAction" method="cleanShoppingCart">
<result>/goodslist.jsp</result>
</action>
</package>
</struts>
goodslist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>商品浏览页面</title>
</head>
<body>
商品浏览
<table border="1px">
<s:if test="goodslist!=null">
<s:iterator value="goodslist" status="index">
<s:if test="#index.index==0">
<tr><td><s:property value="index.count"/></td></tr>
</s:if>
<tr>
<td width="80"><s:property value="id"/></td>
<td><s:hidden name="book.bookid"></s:hidden>
<td width="80"><s:property value="bookName"/></td>
<td width="80"><s:property value="authorName"/></td>
<td width="80"><s:property value="price"/></td>
<td width="80"> <s:property value="discount"/></td>
<td width="80"><s:date name="publishDate" format="yyyy-MM-dd"/></td>
<td width="80"><s:property value="description"/></td>
<td width="80"><s:property value="note"/></td>
<td width="80"><s:if test="status==1">已付款</s:if>
<s:elseif test="status==2">收藏</s:elseif>
</td>
</tr>
</s:iterator>
</s:if>
</table>
</body>
</html>
buy.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>购买网页</title>
</head>
<body>
<table border="1px">
<tr><td>题目</td><td>价格</td></tr>
<tr>
<td>
//<s:hidden name="book.id" value="123"/>
//<s:hidden name="book.bookName" value="book123"/>
Thinking In Java
</td>
<td>100</td>
<td><a href="http://localhost:8080/buybook.action?book.id=123&book.bookName=book123">购买</a></td>
</tr>
<tr>
<td>
//<s:hidden name="book.id" value="111"/>
//<s:hidden name="book.bookName" value="book111"/>
Thinking In C++
</td>
<td>109</td>
<td><a href="http://localhost:8080/buybook.action?book.id=111&book.bookName=book111">购买</a></td>
</tr>
</table>
</body>
</html>