现在的位置: 首页 > 综合 > 正文

struts2 cookie shopping

2013年12月10日 ⁄ 综合 ⁄ 共 6199字 ⁄ 字号 评论关闭

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>

【上篇】
【下篇】

抱歉!评论已关闭.