Эта статья разделяет конкретный код модуля корзины для покупок для вашей ссылки. Конкретный контент заключается в следующем
Это не сеанс или файл cookie, а стол
> Добавить покупки записей
> Измените количество покупок
> Удалить запись
> Удаление партии записей
> Моя корзина, то есть запросы элементов от пользователя
> Запрос проверенных записей
1. Таблица данных
Копия кода выглядит следующим образом: вставьте в `t_cartitem` (` cartiTemid`, `Quicty`,` bid`, `uid`,` orderby`) значения ('B8939FC55131469CAB11E3924D40185B', 1, 'CE01F15D435A4C51B0AD8202A318DCA7', 'XXX', 11);
2. Cartitem
открытый класс cartitem {private String cartiTemid; // Primary Key Private int Количество; // Количество Частная книга; // Книга, соответствующая частному пользователю, пользователь, // Пользователь // Добавить субтотальный метод public double getSubtotal () {/** Не будет ошибки при использовании BigDecimal* требует строкового конструкции для использования*/ BigDecimal B1 = B1 = B1 = B1 = B1 = B1 = B1 = B1 BigDecimal (book.getCurrprice () + ""); BigDecimal B2 = новый BigDecimal (количество + ""); BigDecimal B3 = B1.Multiply (B2); возврат b3.doublevalue (); } public String getCartItemid () {return cartiTemid; } public void setCartiTemid (String cartiTemid) {this.cartiTemid = cartiTemid; } public int getQuantity () {return Количество; } public void setquantity (int Количество) {this.quantity = количество; } public book getBook () {return book; } public void setbook (книга книги) {this.book = book; } public user getUser () {return user; } public void setUser (пользователь пользователя) {this.user = user; }}Советы: в Java не будет ошибок в округление BigDecimal
// Добавить субтотальный метод public double getSubtotal () {/** Не будет ошибки при использовании BigDecimal* Требуется конструктор типа строки, который будет использоваться*/ BigDecimal B1 = новый BigDecimal (book.getCurrprice () + ""); BigDecimal B2 = новый BigDecimal (количество + ""); BigDecimal B3 = B1.Multiply (B2); return b3.doublevalue ();}3. Проверьте запись корзины покупок через пользователей
Каждая запись в моей записи корзины для покупок должна отобразить цену списка книжки с картинками, что означает, что требуется несколько таблиц
public List <cartitem> findbyuser (String Uid) Throws SQLexception {String SQL = "SELECT * FROM T_CARTITEM C, T_Book B, где C.Bid = B.Bid и UID =? Порядок от C.OrderBy"; Список <map <string, object >> maplist = qr.query (sql, new maplisthandler (), uid); return tocartitemlist (maplist);}4. Добавить записи корзины для покупок ----- Добавить
JSP
<div> <form id="form1" action="<c:url value='/CartItemServlet'//>" method="post"> <input type="hidden" name="method" value="add"/> <input type="hidden" name="bid" value="${book.bid }"/> I want to buy: <input id="cnt" type="text" name="quantity" value = "1"/> </form> <a id = "btn" href = "javaScript: $ ('#form1'). Opper ();"> </a> </div>CartiTemservlet
public String add (httpservletrequest req, httpservletresponse resp) revletexception, ioexception { / * * 1. Инкапсулируют данные формы в картивание (Bid, количество) * / map map = req.getparametermap (); Cartitem cartitem = commonutils.tobean (map, cartitem.class); Book Book = commonutils.tobean (map, book.class); Пользователь пользователь = (пользователь) req.getSession (). GetAttribute ("sessionUser"); cartitem.setbook (книга); cartitem.setuser (пользователь); CartiTemNervice.Add (Cartitem); вернуть mycart (req, resp);}CartiTemNervice
public void add (cartitem cartitem) {try { /** 1. Используйте UID и предъявляет заявку на вопрос, существует ли эта запись в базе данных* / cartitem _cartitem = cartiTemdao.findbyuidandbid (cartitem.getUser (). getuid (), cartitem.getbook (). getbid ()); if (_cartitem == null) {// Если такая запись не было, добавьте вход Cartitem.setCartitemid (commonutils.uuid ()); cartitemdao.addcartitem (cartitem); } else {// Если была эта запись, измените число // Использование исходного количества и количество новых записей, которые будут использоваться в качестве нового количества int Количество = cartitem.getQuantity () + _cartitem.getQuantity (); // Изменение количества этой старой записи cartitemdao.updatequantity (_cartitem.getCartiTemid (), количество); }} catch (Exception e) {бросить новое runtimeexception (e); }}Cartitemdao
public void AddCartitem (Cartitem cartitem) Throws SQLexception {string sql = "Вставка в t_cartiTem (cartiTemid, количество, бид, uid)" + "значения (?,?,?)"; Object [] params = {cartitem.getCartitemid (), cartitem.getquantity (), cartitem.getbid (), cartitem.getuser (). GetUid ()}; qr.update (sql, params);}5. Страница модуля корзины для покупок JavaScript ---- Проверьте
Рассчитайте общую сумму
Добавить событие Click, чтобы выбрать все
Добавить событие Click в флажок для всех записей
Добавить событие Click в знак минус
Добавить событие Click в знак плюс
Партия удаления
List.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <Title> Cartlist.jsp </title> <meta http-equiv = "head>" no-contepache = "meta http-equiv =" pragmae ". http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "Content" Content = ", ключевое слово1, ключевое слово3"> <meta http-equiv = "description". type = "text/css" href = "styles.css">-> <script src = "<c: url value = '/jquery/jquery-1.5.1.js'/>"> </script> <script src = "<c: url value = '/js/round.js'/>"> </script> <link relse = "/js/round.js '/>"> </script> <link = "reliles"/"styles"/" href = "<c: url value = '/jsps/css/cart/list.css' ///>"> <script type = "text/javascript"> $ (function () {showtotal (); // Рассчитайте Total/* Добавить Event Click, чтобы выбрать все*/$ (#selectall "). $ ("#selectall"). attr ("cherced"); /* 2. Синхронизировать флажки всех записей с выбранным всем состоянием*/ setIteMcheckbox (bool); /* 3. Синхронизировать кнопку оформления заказа с выбранным All*/ setjiesuan (bool); /* 4. пересчитывать общее*/ showtotal (); }); /* Добавить событие Click в флажки всех записей*/$ (": fackbox [name = fackboxbtn]"). Click (function () {var all = $ (": fackbox [name = fackbox]"). Length; // Количество всех записей var select = $ (": fackbox [name = checkbox] [chected = ware intertect vare overse allse in nocment infort of nocment infort of true if inforted if inforted of nocmvict of noc. {// All $ ("#selectall"). Attr ("проверено", true); // проверить флажок все флажок Setjiesuan (true); // Сделать кнопку проверки Valid} else if (select == 0) {// No One Selected $ ("#selectall"). $ ("#selectall"). attr ("проверено", false); // Отмена всех setjiesuan (false); // cancel checkout} else {$ ("#selectall"). attr ("cherced", false); // Отменить все setjiesuan (true); // ut alt atallage vaillage} showtotal (); // recalculate}); /* Добавить событие Click к знаку Minus*/ $ (". Jian"). Click (function () {// Получить CartiTemid var id = $ (this) .Attr ("id"). Substring (0, 32); // Получить количество в переменном вводе. но удаление его. // Добавить Click Event $ (". Jia"). Click (function () {// Получить CartiTemid var id = $ (this) .Attr ("id"). Substring (0, 32); // Получить номер в окне ввода var varicity = $ ("#" + id + "Количество"). Val (); SendupDatequantity (id, number (№); изменить количество. Функция sendupDateQuantity (id, количество) {$ .ajax ({async: false, cache: false, url: «/good/cartiTemservlet», данные: {метод: «Updatequantity», CartiTemid: ID, Количество: Количество}, Тип: «POST», DATATYP: «JSON», успех: FUNCED (RESTURT) {//1. «Количество»). Val (Result.quantity); /* 1. Получите все флажки с зарегистрированными записями! Loop Traversal */$ (": fackbox [name = fackboxbtn] [checked = true]"). Каждый (function () {// 2. Получить значение флажества, то есть префикс других элементов var id = $ (this) .val (); // 3. Затем найдите подтотальный элемент через Prefix и получите его текст -текст = $ (#### + идентификатор ")") ")") ") // 4. // 5. Отобразить общее количество на общем элементе $ ("#total"). Текст (Round (Total, 2)); // Функция функции Round () состоит в том, чтобы сохранить общее количество 2 бит}/ * * Установите кнопку проверки для всех записей в униформе */function setIteMcheckbox (bool) {$ (": fackbox [name = facebox]"). ATTR ("CHECED", BOOL);}/ * Установить кнопку проверки */Функция SETJIESUAN (BOOL) {if) {if) {if) {if) {if) {if) {if) {if) {if) {if) $ ("#jiesuan"). RemoveClass ("kill"). addClass ("jiesuan"); $ ("#jiesuan"). unbind ("click"); // отменять все события текущего элемента} else {$ ("#jiesuan"). removeClass ("jiesuan"). addClass ("kill"); $ ("#jiesuan"). Click (function () {return false;}); }}/** ПАКЕР УДАЛИТЬ*/ФУНКЦИЯ BatchDelete () {// 1. Получить флажки для всех выбранных записей // 2. Создать массив и добавить значения всех выбранных флажков в массив // 3. Укажите местоположение в качестве Cartitemservlet, параметр method = batchdelete, parameter -cartemids = toString () array -vareTALE (ParameteMids = toString () array -vareTALE (ParameteMIDS = toString () array -vareTALETE (ParameteMIDS = toString () array -vareTALEE) $ (": fackbox [name = fackboxbtn] [checked = true]"). Каждый (function () {cartiTemidarray.push ($ (this) .val ()); // Добавить значение флажки в массив}); location = "/hoeld/cartiTemservlet? Method = batchdelete & cartiTemidarray;}/** Checkout*/function jiesuan () {// 1. Получить идентификаторы всех выбранных записей и поместите их в массив var cartiTemidarray = new Array (); $ (": Checkbox = feebox) CartiTemidArray.push ($ (this) .val ()); // Добавить значение флажки в массив}); $ ("#hiddentotal"). Val ($ ("#total"). Text ()); <td align = "right"> <img align = "top" src = "<c: url value = '/images/icon_empty.png' ////"/> </td> <td> <pran> В вашей корзине нет продуктов </span> </td> </tr> </table> </c C: when> <c -c -c -copd> <sale> <table align = ». cellpacing="0"> <tr align="center" bgcolor="#efeae5"> <td align="left"> <input type="checkbox" id="selectAll" checked="checked"/><label for="selectAll">Select all</label> </td> <td colspan="2">Product name</td> <td>Unit price</td> <td> Количество </td> <td> subtotal </td> <td> операция </td> </td> </td> </tr> <C: foreach elects = "$ {cartitemlist}" var = "cartitem"> <tr align = "center"> <td align = "Left"> <input value = "$" {cartitem = "center"> <td align = "> <input value =" $ "{cartitem". type = "fackbox" name = "fackboxbtn" checked = "checked"/> </td> <td align = "left"> <a href = "<C: url value = '/jsps/book/desc.jsp'/>"> <img align = "top" src = "<c: url value = '/$ {cartitem.book. </td> <td align = "left"> <a href = "<c: url value = '/jsps/book/desc.jsp'/>"> <pan> $ {cartitem.book.bname} </span> </a> </td> <td> <pan> $ {cartitem.bour.currpric id = "$ {cartitem.cartitemid} jian"> </a> <input readonly = "readonly" id = "$ {cartitem.cartitemid} количество" type = "text" value = "$ {cartitem.quantity}"/> <a id = "$ {cartitem.cartiTemid} jia"> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </yd = "$ {cartem.cartiTem} </> </> <a id =" $ {cartem.cartiTemid} <pan> ¥ <span id = "$ {cartitem.cartitemid} subtotal"> $ {cartitem.subtotal} </span> </span> </td> <td> <a href = "<c: url value = '/cartiTemservled? } '/> "> Delete </a> </td> </td> </tr> </c: foreach> <tr> <td colspan =" 4 "> <a href =" javascript: batchdelete (); "> Право пакета </a> </td> <td colspan =" 3 "Align ="> <pan> </td> <td colspan = "3" id = "total"> </span> </span> </td> </tr> <tr> <td colspan = "7" align = "right"> <a href = "javascript: jiesuan ();" id = "jiesuan"> </a> </td> </tr> </table> <form = " 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> </c:otherwise></c:choose> </body> </html>Советы: Round.js в JS
// 5. Отображение общей суммы на общем элементе $ ("#total"). Текст (Round (Total, 2)); // Функция функции Round () состоит в том, чтобы сохранить 2 бита от общего числа6. Функция удаления партии ---- Удалить
JSP
Function BatchDelete () {// 1. Получить флажки для всех выбранных записей // 2. Создайте массив и добавьте значения всех выбранных флажков в массив // 3. Укажите местоположение в качестве CartiTemservlet, параметр method = batchdelete, parameter -cartiTemids = toString () ray vartemidArray = new array (); $ (": fackbox [name = fackboxbtn] [checked = true]"). Каждый (function () {cartiTemidarray.push ($ (this) .val ()); // Добавить значение флажки в массив}); location = "/hoeld/cartiTemservlet? Method = batchDelete & cartiTemids =" + cartiTemidarray;}Удалить один
if (количество == 1) {if (inform ("Вы действительно хотите удалить запись?")) {location = "/good/cartiTemservlet? Method = batchDelete & cartiTemids =" + id; }} еще {7. Количество модификаций ----- Изменить
JSP
// Запросить сервер и изменить номер. Функция sendupDateQuantity (id, количество) {$ .ajax ({async: false, cache: false, url: «/good/cartiTemservlet», данные: {метод: «Updatequantity», CartiTemid: ID, Количество: Количество}, Тип: «POST», DATATYP: «JSON», успех: FUNCED (RESTURT) {//1. «Количество»).сервис
public String updatequantity (httpservlectrequest req, httpservletresponse resp) бросает Servletexception, ioException {String cartiTemid = req.getParameter ("cartiTemid"); int coolity = integer.parseint (req.getParameter ("Количество")); Cartitem cartitem = cartiTemNervice.UpdateQuantity (CartiTemid, количество); // возвращать объект JSON в клиентский stringBuilder sb = new StringBuilder ("{"); sb.append ("/" количество/""). Append (":"). Append (cartitem.getQuantity ()); SB.Append (","); sb.append ("/" subtotal/""). Append (":"). Append (cartitem.getSubtotal ()); sb.append ("}"); resp.getwriter (). print (sb); вернуть null;}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.