目录

学习目标:

1.通过超链接a传参将所点击购买的商品id传到处理页面doShopCart.jsp进行处理

2.接收超链接a所传productid并进行处理

3.接收处理后的存储多个id的ArrayList aList购物车列表,通过ProItemDaoImp类的getProItemByIds(aList)方法从数据库取出商品id所对应的商品信息

4.通过实现类ProItemDaoImp调getProItemByIds(aList)方法获得商品集合通过遍历输出在页面上


学习目标:

理解并掌握jsp中购物车的简单实现思想


核心步骤

1.通过超链接a传参将所点击购买的商品id传到处理页面doShopCart.jsp进行处理

所需的主要知识:超链接传参,jsp表达式

核心代码:

<a href="doShopCart.jsp?productid=<%=p.get("productid") %>">

商品列表展示:


2.接收超链接a所传productid并进行处理

所需的主要知识:session对象getAttribute(),setAttrubute()方法,request对象的get.getParameter()方法

核心代码:

<%//从商品列表获取添加到购物车             String id=null;//判断购物车列表是否为空,若不为空则先获取该列表再传商品id//此判断是重点⭐⭐⭐if(session.getAttribute("cartList")!=null){//获得idid=request.getParameter("productid");//接收购物车列表ArrayList<String> cartList=(ArrayList<String>)session.getAttribute("cartList");cartList.add(id);//更新购物车列表session.setAttribute("cartList",cartList);//重定向到购物车response.sendRedirect("shopCart.jsp");}else{//若为空则先创建购物车列表再添加商品id//创建购物车列表存储idArrayList<String> cartList=new ArrayList<String>();//同上id=request.getParameter("productid");cartList.add(id);session.setAttribute("cartList",cartList);response.sendRedirect("shopCart.jsp");}                                                                               %>

3.接收处理后的存储多个id的ArrayList aList购物车列表,通过ProItemDaoImp类的getProItemByIds(aList)方法从数据库取出商品id所对应的商品信息

所需要的知识:数据库连接(略),sql语句的查询,ArrayList,泛型

核心代码

//工具类
public class DataBase {static String driver="com.mysql.jdbc.Driver";//驱动字符串static String url="jdbc:mysql:///mypos?characterEncoding=utf-8";////连接字符串1                    **所需连接数据库的名称***static String username="root";//数据库访问用户名static String password="123";//数据库访问密码PreparedStatement ps=null; Connection conn=null;Statement sm=null;ResultSet rs=null;public Connection getConn() {return conn;}public void setConn(Connection conn) {this.conn = conn;}public Statement getSm() {return sm;}public void setSm(Statement sm) {this.sm = sm;}public ResultSet getRs() {return rs;}public void setRs(ResultSet rs) {this.rs = rs;}public DataBase(){try {//1.加载驱动Class.forName(driver);//2.建立连接conn=DriverManager.getConnection(url, username, password);sm=conn.createStatement(); //3.执行sql语句(封装到方法中)   } catch (ClassNotFoundException e) {    e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}//执行sql语句获得结果集public ResultSet getResult(String sql){try {return rs=sm.executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return rs;    }}//类的daopublic interface ProItemDao { public ArrayList<HashMap<String,Object>> getProItemByIds(ArrayList<String> idList);
}//类的daoImppublic class ProItemDaoImp extends DataBase implements ProItemDao {@Overridepublic ArrayList<HashMap<String, Object>> getProItemByIds(ArrayList<String> idList) {ArrayList<HashMap<String, Object>> aList=new ArrayList<HashMap<String,Object>>();String sql=null;ResultSet rs=null;//通过遍历将购物车列表中的id分别执行查询,并且将所有结果添加到ArrayList结果集中for (String id:idList) {sql="SELECT p.productid,p.name,i.listprice,i.status"+" FROM product p,item i,category c"+" WHERE p.productid=i.productid && p.productid='"+id+"' && p.category=c.catid";//根据自己的需求去拼接sql语句//通过getResult 方法获得结果集rs = this.getResult(sql);            try {while(rs.next()){//创建HashMap对象将数据存进去HashMap<String, Object> map=new HashMap<>();//根据数据库中表所对应列名存进HashMapmap.put("productid", rs.getString("productid"));                   map.put("name", rs.getString("name"));                  map.put("listprice", rs.getDouble("listprice"));                    map.put("status", rs.getString("status"));//将该对象存到ArrayList中返回获得的结果集aList.add(map);                             }} catch (SQLException e) { e.printStackTrace();}}  return aList;}}

4.通过实现类ProItemDaoImp调getProItemByIds(aList)方法获得商品集合通过遍历输出在页面上

所需要的知识:HashMap中操作方法,遍历

核心代码:

<%//从carList存储的id获得购物车列表ProItemDaoImp pidi=new ProItemDaoImp();  //接收购物车列表ArrayList<String> a=(ArrayList<String>)session.getAttribute("cartList");//通过ProItemDaoImp类中的getProItermByIds方法,//获得购物车列表中存的多个id获取商品信息ArrayList<HashMap<String,Object>> cart=pidi.getProItemByIds(a);         //遍历获得的商品列表,通过循环输出到网页购物车中for(HashMap<String,Object> hm:cart){
%><tr ><td><%=hm.get("productid") %></td><td ><%=hm.get("name") %></td><td ><%=hm.get("listprice") %></td><td>1</td><td><input type="button"  value="删除" /></td></tr>             <%}%>​

购物车列表展示:


总结:该功能重点在通过session对象传递商品id列表和对id列表进行sql处理


jsp购物车简单实现思想(一)相关推荐

  1. 基于javaweb+JSP+Servlet简单购物车

    基于javaweb+JSP+Servlet简单购物车 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 public ...

  2. 【java web】用jsp实现简单的购物车程序

    这里写自定义目录标题 index.jsp 首页 zuce.jsp 注册界面 login.jsp 登录界面 index_OK.jsp 登录成功界面 l1.jsp 商品1[自提交] l2.jsp 商品2[ ...

  3. jsp oracle 登录页面,Oracle数据库之ORACLE+Myeclipse+jsp实现简单登录功能

    本文主要向大家介绍了Oracle数据库之ORACLE+Myeclipse+jsp实现简单登录功能,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库表的建立: c ...

  4. 《复杂》读书笔记(part1)--一些思想是由简单的思想组合而成,我称此为复杂

    学习笔记 学习书目:<复杂>- 梅拉妮·米歇尔 文章目录 复杂是什么 复杂系统的共性 如何度量复杂性 复杂是什么 一些思想是由简单的思想组合而成,我称此为复杂:比如美.感激.人.军队.宇宙 ...

  5. 韩顺平 mysql sqlhelper类_(最全)韩顺平jsp购物车源代码(包含数据库)

    [实例简介] 韩顺平的jsp购物车项目,所有源码都在,包含数据库,是网络上最全的 [实例截图] [核心代码] myshopping └── myshopping ├── myshopping │   ...

  6. python是一种代表简单主义思想的语言_setuptools-36.6.0

    setuptools-36.6.0 所属分类:Windows编程 开发工具:Python 文件大小:708KB 下载次数:1 上传日期:2017-10-25 10:37:48 上 传 者:Lhy123 ...

  7. vue实现购物车简单的功能-单选全选总价计算、批量删除

    vue实现购物车简单的功能-----单选全选总价计算.批量删除等 观看了后盾人视频教学,视频里面对于全选和单选的功能没有讲全,于是自己研究了一下,前端小白,也是第一次写博客,有什么不足和可以优化的地方 ...

  8. JSP实现简单的登录页面实现及代码(非连接数据库)

    ** JSP实现简单的登录页面实现及代码(非连接数据库) ** 1.实现一个简单的登陆页面: 2.如果登陆成功,提示页面欢迎你,进入我的主页: 3.如果登陆不成功跳转到登陆页面: 4.使用固定用户名和 ...

  9. python是一种代表简单主义思想的语言_python区别于其他语言的优势是什么

    python区别于其他语言的优势: 1.简单,Python是一种代表简单主义思想的语言 阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是 ...

  10. python购物车简单小程序

    通过学习循环.列表等知识,写了购物车简单的程序 注意输入工资,以及输入Id时,需要把其转换为Int类型 # Author:barry allen # -*- coding:utf-8 -*- sala ...

最新文章

  1. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义
  2. 打一场AI竞赛,让你知道我的厉害
  3. 一个很不错的开源网站
  4. 关于eclipse的maven
  5. 【python】路径前添加 r表示不转义
  6. 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)
  7. 二叉树N叉数的前中后序遍历总结,python实现递归法和迭代法
  8. LeetCode 221. 最大正方形(DP)
  9. linux 测试本地端口是否打开,有效地测试Linux上的端口是否打开?
  10. java组件_三个必不可少的Java平台组件:什么是JVM,JDK,JRE?有啥区别?
  11. 计算机二级公共知识总结,计算机二级公共基础知识考点总结
  12. 过滤字符串 和 select选择后控件值变更
  13. 客户端地图拼图算法解析
  14. 用Razor做静态页面生成器
  15. java dbutils_Java学习之DBUtils
  16. arm板配置ssh服务
  17. 计算机电缆对绞节距,耐高温双绞计算机电缆DJFFP2√厂家
  18. linux下的office 速度慢,针对Libreoffice卡顿奇慢的怪病,这里有一味特效药
  19. 什么是disjoint-support?
  20. 【allegro 17.4软件操作保姆级教程一】软件操作环境设置

热门文章

  1. 联想微型计算机设置键盘开机,联想台式机怎么样设置键盘开机
  2. 用DIV+Css+Jquery 实现的旧版微信飞机大战。
  3. 草根站长的你是感觉自豪还是苦逼
  4. Allavsoft 下载 .m3u8 视频
  5. 计算机图形学 之 中点画线算法
  6. dubbo 支持服务降级吗_Dubbo服务降级设置
  7. Wifite批量破解WEP/WPA/WPS
  8. 麦子学院bootstrap实战项目官网,后台,jquery.singlePageNav.min.js ,wow.min.js,animate.css使用...
  9. 【计算机组成与设计】3.4计算机CPU除法运算
  10. 极光IM简单接入步骤