JAVAEE中用Session简单实现购物车功能示例代码

 更新时间:2017年03月01日 14:15:40   作者:张行之  
本篇文章主要介绍了JAVAEE中用Session简单实现购物车功能示例代码,非常具有实用价值,需要的朋友可以参考下。

Session简单实现购物车功能

这个小程序主要就3个页面,一个商品列表页面(HomeServlet),一个是提示加入购物车页面(AddCartTipServlet),一个是显示购物车清单页面(ShowCartServlet)。

HomeServlet页面:

@WebServlet({ "/HomeServlet", "/home" })
public class HomeServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  public HomeServlet() {
    super();
  }

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

    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.print("<h2>书单</h2><hr/><br/>");
    out.print("人类简史<a href='"+request.getContextPath()+"/addCartTip?id=1'>加入购物车</a><br/>");
    out.print("未来简史<a href='"+request.getContextPath()+"/addCartTip?id=2'>加入购物车</a><br/>");
    out.print("世界简史<a href='"+request.getContextPath()+"/addCartTip?id=3'>加入购物车</a><br/>");
    out.print("时间简史<a href='"+request.getContextPath()+"/addCartTip?id=4'>加入购物车</a><br/>");
    out.print("<a href='"+request.getContextPath()+"/show/cart'>查看购物车</a><br/>");
  }

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

}

AddCartTipServlet页面:

@WebServlet({ "/AddCartTipsServlet", "/addCartTip" })
public class AddCartTipsServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;


  public AddCartTipsServlet() {
    super();
  }

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

    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");

    HttpSession session = request.getSession();
    List<String> list = (List<String>) session.getAttribute("cart");
    if(list==null){
      list=new ArrayList<>();
    }

    String id = request.getParameter("id");
    list.add(id);
    session.setAttribute("cart", list);

    System.out.println(list.toString());
    response.getWriter().println("已加入购物车<br/>"
        + "<a href='"+request.getContextPath()+"/home'>继续购物</a><br/>"
        + "<a href='"+request.getContextPath()+"/show/cart'>查看购物车</a><br/>");
  }

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

}

ShowCartSevlet页面

@WebServlet({ "/ShowCartServlet", "/show/cart" })
public class ShowCartServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  public ShowCartServlet() {
    super();
  }


  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    List<String> list = (List<String>)request.getSession().getAttribute("cart");
    if(list!=null){   
      out.print("你的购物清单:<br/>");
      for (String string : list) {
        out.println(DBUtils.findById(string)+"<br/>");
      }
      out.println("<br/><a href='"+request.getContextPath()+"/home'>继续购物</a><br/>");
    }else{
      out.println("你还没有将商品添加到购物车<br/>"
          + "<a href='"+request.getContextPath()+"/home'>返回商品列表</a><br/>");
    }
  }

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

}

DBUtils:存储着商品信息

public class DBUtils {
  private static Map<String,String> map = new HashMap<>();

  static{
    map.put("1", "人类简史");
    map.put("2", "未来简史");
    map.put("3", "世界简史");
    map.put("4", "时间简史");
  }

  public static String findById(String id){
    return map.get(id);
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java数据类型Integer与int的区别详细解析

    Java数据类型Integer与int的区别详细解析

    这篇文章主要介绍了Java数据类型Integer与int的区别详细解析,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null,int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比,需要的朋友可以参考下
    2023-12-12
  • Java标识接口的使用方法

    Java标识接口的使用方法

    在本篇文章中小编给大家分享了关于Java标识接口的使用方法和教程内容,有需要的朋友们学习下。
    2019-01-01
  • Ubuntu 15下安装JDK1.8教程

    Ubuntu 15下安装JDK1.8教程

    这篇文章主要为大家详细介绍了Ubuntu 15下JDK1.8安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java 时间相减算法题解示例

    Java 时间相减算法题解示例

    这篇文章主要为大家介绍了Java 时间相减算法题解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • SpringBoot中@Autowired生效方式详解

    SpringBoot中@Autowired生效方式详解

    @Autowired注解可以用在类属性,构造函数,setter方法和函数参数上,该注解可以准确地控制bean在何处如何自动装配的过程。在默认情况下,该注解是类型驱动的注入
    2022-06-06
  • 加速spring/springboot应用启动速度详解

    加速spring/springboot应用启动速度详解

    这篇文章主要介绍了加速spring/springboot应用启动速度详解,本文通过实例代码给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 一篇文章带你深入了解Java基础

    一篇文章带你深入了解Java基础

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Java自定义equals产生的问题分析

    Java自定义equals产生的问题分析

    这篇文章主要介绍了Java自定义equals时super.equals带来的问题分析,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2023-01-01
  • Java采用setAsciiStream方法检索数据库指定内容实例解析

    Java采用setAsciiStream方法检索数据库指定内容实例解析

    这篇文章主要介绍了Java采用setAsciiStream方法检索数据库指定内容,是比较实用的功能,需要的朋友可以参考下
    2014-08-08
  • Spring Security学习笔记(一)

    Spring Security学习笔记(一)

    这篇文章主要介绍了Spring Security的相关资料,帮助大家开始学习Spring Security框架,感兴趣的朋友可以了解下
    2020-09-09

最新评论