网上图书商城项目学习笔记-017结算,跳转结算页面

一、流程分析

二、代码

1.view层

(1)list.jsp

    <tr>
        <td colspan="7" align="right">
            <a href="javascript:jiesuan();" id="jiesuan" class="jiesuan"></a>
        </td>
    </tr>
</table>
    <form id="jieSuanForm" action="<c:url value=‘/CartItemServlet‘/>" method="post">
        <input type="hidden" name="cartItemIds" id="cartItemIds"/>
        <input type="hidden" name="total" id="hiddenTotal"/>
        <input type="hidden" name="method" value="loadCartItems"/>
    </form>

 /*
 * 结算
 */
 function jiesuan() {
     // 1. 获取所有被选择的条目的id,放到数组中
     var ids = new Array();
     $("input[type=checkbox][name=checkboxBtn]:checked").each(function(index, domEl) {
         ids.push($(domEl).val());
     });
     // 2. 把数组的值toString(),然后赋给表单的cartItemIds这个hidden
     $("#cartItemIds").val(ids);
    // 把总计的值,也保存到表单中
    $("#hiddenTotal").val($("#total").text());
    // 3. 提交这个表单
    $("#jieSuanForm").submit();
 }

(2)showitem.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 4
 5
 6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 7 <html>
 8   <head>
 9     <title>showitem.jsp</title>
10
11     <meta http-equiv="pragma" content="no-cache">
12     <meta http-equiv="cache-control" content="no-cache">
13     <meta http-equiv="expires" content="0">
14     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
15     <meta http-equiv="description" content="This is my page">
16     <!--
17     <link rel="stylesheet" type="text/css" href="styles.css">
18     -->
19     <link rel="stylesheet" type="text/css" href="<c:url value=‘/jsps/css/cart/showitem.css‘/>">
20     <script src="<c:url value=‘/jquery/jquery-1.5.1.js‘/>"></script>
21     <script src="<c:url value=‘/js/round.js‘/>"></script>
22 <style type="text/css">
23 #addr{width: 500px; height: 32px;border: 1px solid #7f9db9; padding-left: 10px; line-height: 32px;}
24 </style>
25
26 <script type="text/javascript">
27     //计算合计
28     $(function() {
29         var total = 0;
30         $(".subtotal").each(function() {
31             total += Number($(this).text());
32         });
33         //$("#total").text(round(total, 2));
34     });
35 </script>
36   </head>
37
38   <body>
39 <form id="form1" action="<c:url value=‘/jsps/order/ordersucc.jsp‘/>" method="post">
40     <input type="hidden" name="cartItemIds" value=""/>
41     <input type="hidden" name="method" value=""/>
42 <table width="95%" align="center" cellpadding="0" cellspacing="0">
43     <tr bgcolor="#efeae5">
44         <td width="400px" colspan="5"><span style="font-weight: 900;">生成订单</span></td>
45     </tr>
46     <tr align="center">
47         <td width="10%">&nbsp;</td>
48         <td width="50%">图书名称</td>
49         <td>单价</td>
50         <td>数量</td>
51         <td>小计</td>
52     </tr>
53
54
55 <c:forEach items="${items }" var="item">
56     <tr align="center">
57         <td align="right">
58             <a class="linkImage" href="<c:url value=‘/jsps/book/desc.jsp‘/>"><img border="0" width="54" align="top" src="<c:url value=‘${item.book.image_b }‘/>"/></a>
59         </td>
60         <td align="left">
61             <a href="<c:url value=‘/jsps/book/desc.jsp‘/>"><span>${item.book.bname }</span></a>
62         </td>
63         <td>&yen;${item.book.currPrice }</td>
64         <td>${item.quantity }</td>
65         <td>
66             <span class="price_n">&yen;<span class="subtotal">${item.subtotal }</span></span>
67         </td>
68     </tr>
69 </c:forEach>
70
71     <tr>
72         <td colspan="6" align="right">
73             <span>总计:</span><span class="price_t">&yen;<span id="total">${total }</span></span>
74         </td>
75     </tr>
76     <tr>
77         <td colspan="5" bgcolor="#efeae5"><span style="font-weight: 900">收货地址</span></td>
78     </tr>
79     <tr>
80         <td colspan="6">
81             <input id="addr" type="text" name="address" value="北京市 昌平区 西三旗 金燕龙办公楼1层 传智播客 张三爷"/>
82         </td>
83     </tr>
84     <tr>
85         <td style="border-top-width: 4px;" colspan="5" align="right">
86             <a id="linkSubmit" href="javascript:$(‘#form1‘).submit();">提交订单</a>
87         </td>
88     </tr>
89 </table>
90 </form>
91   </body>
92 </html>

2.servlet层

(1)CartItemServlet.java

 1     /**
 2      * 加载多个CartItem
 3      * @param req
 4      * @param resp
 5      * @return
 6      * @throws ServletException
 7      * @throws IOException
 8      */
 9     public String loadCartItems(HttpServletRequest req, HttpServletResponse resp)
10             throws ServletException, IOException {
11         // 1. 获取cartItemIds参数
12         String ids = req.getParameter("cartItemIds");
13         double total = Double.parseDouble(req.getParameter("total"));
14         // 2. 通过service得到List<CartItem>
15         List<CartItem> items = service.loadCartItems(ids);
16         // 3. 保存,然后转发到/cart/showitem.jsp
17         req.setAttribute("items", items);
18         req.setAttribute("total", total);
19         req.setAttribute("cartItemIds", ids);
20         return "f:/jsps/cart/showitem.jsp";
21
22     }

3.service层

(1)CartitemService.java

 1     /**
 2      * 加载多个CartItem
 3      * @param ids
 4      * @return
 5      */
 6     public List<CartItem> loadCartItems(String ids) {
 7         try {
 8             return dao.loadCartItems(ids);
 9         } catch (SQLException e) {
10             throw new RuntimeException(e);
11         }
12     }

4.dao层

(1)CartItemDao.java

 1     /**
 2      * 加载多个CartItem
 3      * @param ids
 4      * @return
 5      * @throws SQLException
 6      */
 7     public List<CartItem> loadCartItems(String ids) throws SQLException {
 8         String [] idsArray = ids.split(",");
 9         String sql = "select * from t_cartItem c, t_book b where c.bid=b.bid and cartItemid in " + toWhereSql(idsArray.length);
10         List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), idsArray);
11         return toCartItemList(mapList);
12     }
时间: 2024-10-08 09:44:49

网上图书商城项目学习笔记-017结算,跳转结算页面的相关文章

网上图书商城项目学习笔记-003系统功能模块分析

1. itcastgoods文件夹介绍2. 项目导入演示 * 导入数据库 * 导入项目,发布,运行3. 项目原型导入演示 * 导入项目原型,发布,运行4. 小工具介绍5. jQuery介绍 6. 项目前台功能介绍 * User模块 > 注册 > 激活 > 登录 > 修改密码 > 退出 * Category模块 > 显示所有分类 * Book模块 > 按分类查询(分页) > 按图名查询(模糊)(分页) > 按作者查询(分页) > 按出版社查询(分页

网上图书商城项目学习笔记-031图书管理模块介绍及添加图书

一.流程分析 1.图书管理模块介绍 2. 3. 4.添加图书第一步 5.添加图书第二步 二.代码 1.view层 (1)body.jsp 1 <body> 2 <h1 align="center">图书管理</h1> 3 <p align="center"> 4 <a href="<c:url value='/admin/AdminBookServlet?method=addPre'/>&q

网上图书商城项目学习笔记-030删除二级分类

一.流程分析 二.代码 1.view层 和一相同 2.servlet层 (1)AdminCategoryServlet.java 1 /** 2 * 删除二级分类 3 * @param req 4 * @param resp 5 * @return 6 * @throws ServletException 7 * @throws IOException 8 */ 9 public String deleteChild(HttpServletRequest req, HttpServletResp

网上图书商城项目学习笔记-018生成订单

一.流程分析 1.订单模块介绍 2.生成订单流程 二.代码 1.view层 (1)showitem.jsp 1 <form id="form1" action="<c:url value='/OrderServlet'/>" method="post"> 2 <input type="hidden" name="cartItemIds" value="${cartIt

网上图书商城项目学习笔记-012BOOK模块查询2

一.分析 > 按图名查询(模糊)(分页)> 按作者查询(分页)> 按出版社查询(分页)> 按id查询> 多条件组合查询(分页) 二.代码 1.view层 (1)gj.jsp等 1 <form action="<c:url value='/BookServlet'/>" method="get"> 2 <input type="hidden" name="method"

网上图书商城项目学习笔记-009退出功能

一.退出功能流程分析 二.代码 1.view层 1)top.jsp 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 5 <!DOCTYPE HT

网上图书商城项目学习笔记-010显示所有分类

一.流程分析 二.代码 1.view层 1)main.jsp 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 5 <!DOCTYPE HTML

网上图书商城项目学习笔记-013 添加购物车及我的购物车

一.流程分析 1.购物车模块 2.我的购物车分析 3.添加条目到购物车 二.代码 1.view层 (1)top.jsp 1 <a href="<c:url value='/CartItemServlet?method=myCart'/>" target="body">我的购物车</a> (2)desc.jsp 1 <form id="form1" action="<c:url value=

网上图书商城项目学习笔记-037工具类之BaseServlet及统一中文编码

1.统一中文编码分析 tomcat默认esetISO-8859-1编码,在servlet中,可能通过request的setCharacterEncoding(charset)和response.setContentType("text/html;charset=UTF-8");处理post请求编码,但get请求的编码控制不了,所以,如果请求类型是get,则用装饰者模式把request整个调包 2.EncodingFilter.java 1 package cn.itcast.filte