Session实现购物车功能(八)

(一)创建实体类

package com.Test;

import java.io.Serializable;

/**
 * 
 * @author Kaina
 *
 */
public class Book implements  Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String id;
    private String name;



    public Book(String id, String name) {
        //super();
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

(二)创建数据库模拟类

package com.Test;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class BookDB {
    private static Map<String, Book> books = new LinkedHashMap<String, Book>();
    // 1.保存图书
    static {
        books.put("1", new Book("1", "Hibernate"));
        books.put("2", new Book("2", "Spring"));
        books.put("3", new Book("3", "Struts2"));
        books.put("4", new Book("4", "Java web"));
        books.put("5", new Book("5", "Java"));
    }

    // 2.获得所有图书
    public static Collection<Book> getAll() {
        return books.values();
    }

    // 3.获取指定图书
    public static Book getBook(String id) {
        return books.get(id);
    }
}

(三)创建ListBookServlet类显示所有图书

package com.Test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ListBookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         response.setContentType("text/html;charset=utf-8");
         PrintWriter out = response.getWriter();
         Collection<Book> books = BookDB.getAll();
         out.println("本站提供图书有:<br />");
         for(Book  book:books){
             String url="/Project01/PurchaseServlet?id="+book.getId();
             out.write(book.getName()+"<a href='"+url+"'>点击购买</a><br />");
         }

    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }

}

(四)实现购买类PurchaseServlet

package com.Test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class PurchaseServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取购买商品的ID号
        String  id=request.getParameter("id");
         if(id==null){
             String  url="/Project01/ListBookServletPath";
             response.sendRedirect(url);
             return;
         }
         //2.根据id获取书名
         Book book=BookDB.getBook(id);
         //3.创建HttpSession对象
         HttpSession session = request.getSession();
         //4.获取session对象中的购物车

         @SuppressWarnings("unchecked")
        List<Book> cart=(List<Book>) session.getAttribute("cart");

         if(cart==null){
             //5.使用List集合当作购物车
             cart=new ArrayList<Book>();

             //6.使用session对象保存cart对象
             session.setAttribute("cart", cart);

         }
         //把商品添加到购物车
         cart.add(book);

         //7.创建Cookie对象保存session的id
         Cookie cookie=new Cookie("JSESSIONID",session.getId());
         cookie.setMaxAge(30*60);
         cookie.setPath("/Project01");
         response.addCookie(cookie);

         //8.重定向到购物车页面
         String  url="/Project01/CartServlet";
         response.sendRedirect(url);

    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }

}

(五)CartServlet显示用户所购买的图书

package com.Test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CartServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    @SuppressWarnings("unchecked")
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         response.setContentType("text/html;charset=utf-8");
         PrintWriter out=response.getWriter();
         List<Book> cart=null;
         //1.标记用户是否买过商品
         boolean  purFlag=true;
         HttpSession session = request.getSession();
         if(session==null){
             purFlag=false;
         }else{
             //2.获取用户购物车
             cart=(List<Book>) session.getAttribute("cart");
             if(cart==null){
                 purFlag=false;
             }

         }
         if(!purFlag){
             out.println("对不起!您还没有购买任何商品,<br />");
         }else{
             out.println("您购买的图书有:<br />");

             for(Book book:cart){
                  out.write(book.getName()+"<br />");
             }
         }

    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }

}

(六)配置各个Servlet类

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Project01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ListBookServlet</display-name>
    <servlet-name>ListBookServlet</servlet-name>
    <servlet-class>com.Test.ListBookServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListBookServlet</servlet-name>
    <url-pattern>/ListBookServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>ListBookServlets</display-name>
    <servlet-name>ListBookServlets</servlet-name>
    <servlet-class>com.Test.ListBookServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListBookServlets</servlet-name>
    <url-pattern>/ListBookServletPath</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>PurchaseServlet</display-name>
    <servlet-name>PurchaseServlet</servlet-name>
    <servlet-class>com.Test.PurchaseServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PurchaseServlet</servlet-name>
    <url-pattern>/PurchaseServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>CartServlet</display-name>
    <servlet-name>CartServlet</servlet-name>
    <servlet-class>com.Test.CartServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CartServlet</servlet-name>
    <url-pattern>/CartServlet</url-pattern>
  </servlet-mapping>
</web-app>

结果:

这里写图片描述


这里写图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值