日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cookie购物车

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cookie购物车 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

cookie購物車為例(使用serlvet)
先點擊購買,將數據存儲到cookie中,在點擊去結算
首先建立數據庫連接:
DBSource 接口

package com.dao;import java.sql.Connection;public interface DBSource {public Connection getConn();public void closeConn(Connection conn) ;}

SimpleDBSource 類:

package com.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class SimpleDBSource implements DBSource {public void closeConn(Connection conn) {try {if (conn != null && !conn.isClosed()) {conn.close();}} catch (Exception ex) {ex.printStackTrace();}}public Connection getConn() {String driver = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost:3306/test";String username = "root";String password = "root";Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(url, username, password);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;} }

用來跳轉頁面的serlvet:(訪問時使用這個serlvet)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html");request.setCharacterEncoding("utf-8");ProductDao dao = new ProductDao();List<ProductBean> products = dao.select(1);request.setAttribute("products", products);request.getRequestDispatcher("product1.jsp").forward(request, response);}

jsp頁面:

<script>function buy(id){//獲得購買數量var number = document.getElementById(id).value;//將商品名稱保存到f2表單的id中document.f2.id.value = id;//將購買數量保存到f2的number中document.f2.number.value = number;//表單的提交document.f2.submit();}</script></head><body><!-- 此保單儲存商品的id,和商品的個數 --><form name="f2" action="buy.do"><input type="hidden" name="id"/><input type="hidden" name="number"/></form><form name="f1" action="pay.do"><table><c:forEach var="pro" items="${products}"><tr><td>${pro.productname}</td><!-- 數量的上傳,不能讓id重復,否則上傳的值重復 --><td><input type="text" id="${pro.id}" ></td><td><input type="button" value="購買" onclick="buy(${pro.id})"/></td></tr></c:forEach><tr><td><input type="submit" value="去結賬"></td></tr></table><a href="product2.jsp">到另一頁購買</a></form></body>

buy.do(點擊購買)去的serlvet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html");request.setCharacterEncoding("utf-8");int id = Integer.parseInt(request.getParameter("id"));int number = Integer.parseInt(request.getParameter("number"));//獲取cookie數組Cookie cookies[] = request.getCookies();//判斷cookie是否已經存在數值if(cookies==null){//Cookie存數值為鍵值對的形式,類型是StringCookie cookie = new Cookie(id+"",number+"");System.out.println("id:"+id);System.out.println("number:"+number);//設置cookie的存儲有效時間cookie.setMaxAge(5000);//添加到responseresponse.addCookie(cookie);}else{//不為空,有的就在原有的基礎上添加,沒有的新建添加boolean flag = false;for(Cookie cook : cookies){//判斷cookie中是否已經存在了這個商品的id,如果有在原有的基礎上添加if(cook.getName().equals(id+"")){flag = true;System.out.println("cookvalue:"+cook.getValue());cook.setValue( (Integer.parseInt(cook.getValue()) + number)+"" );cook.setMaxAge(5000);response.addCookie(cook);break;}}//如果所添加的是一個新的,就新建一個if(flag==false){Cookie cookie = new Cookie(id+"",number+"");System.out.println("id:"+id);System.out.println("number:"+number);cookie.setMaxAge(5000);response.addCookie(cookie);}}//跳回原來的頁面PrintWriter out = response.getWriter();out.print("<script>history.go(-1);</script>");}

pay.do(點擊去結算)所對應的serlvet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html");request.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("<script>");//刪除的方法out.println(" function deleteProduct(id){");//將id傳值到f1中out.println(" document.f1.id.value = id; document.f1.submit(); ");out.println("}");out.println("</script>");out.println(" <BODY>");out.println("<form action='delete.do' name='f1'>");out.println("<input type='hidden' name='id'>"); out.println("</form>");//設置表的邊框out.print("<table border = '1'>");out.print("<tr>");out.print("<td>商品名稱</td>");out.print("<td>商品數量</td>");out.print("<td>商品單價</td>");out.print("<td>商品總價</td>");out.print("<td>操作</td>");out.print("</tr>");//商品總價,初始值為0double total = 0;//獲取cookie數組Cookie cookies[] = request.getCookies();if(cookies != null){for(Cookie cook : cookies){//首先要判斷這個if(!cook.getName().equals("JSESSIONID") && !cook.getName().equals("Hm_lvt_080836300300be57b7f34f4b3e97d911")){out.print("<tr>");ProductDao dao = new ProductDao();//根據商品id查詢商品信息//int id = Integer.parseInt(cook.getName());ProductBean bean = dao.selectById(Integer.parseInt(cook.getName()));out.print("<td>"+bean.getProductname()+"</td>");//商品的購買數量out.print("<td>"+cook.getValue()+"</td>");out.print("<td>"+bean.getProductprice()+"</td>");//cookie為String需要轉換int,productTotal是此商品的總價double productTotal = Integer.parseInt(cook.getValue())*bean.getProductprice();out.print("<td>"+productTotal+"</td>");out.print("<td><a href='#' onclick=\"javascript:deleteProduct("+cook.getName()+")\">刪除</a></td>");out.print("</tr>");//全部商品的總價格total += productTotal;}}}out.print("<tr><td align='center' colspan='5'>商品總價:"+total+"</td></tr>");out.print("</table>");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}

delete.do(刪除)所對應的serlvet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html");request.setCharacterEncoding("utf-8");//?;癁镾tring才能和cookie比較String id = request.getParameter("id");//獲取cookie數組Cookie cookies[] = request.getCookies();if(cookies != null){for(Cookie cook : cookies){//首先要判斷這個if(!cook.getName().equals("JSESSIONID")){//判斷cookie的name鍵等于所傳的id,就進行刪除if(cook.getName().equals(id)){//cookie的刪除方式,就是把cookie的有效時間設置為0cook.setMaxAge(0);//添加到responsesresponse.addCookie(cook);break;}}}}//返回付款界面response.sendRedirect("pay.do");}

web.xml配置文件:

<servlet><servlet-name>BuyServlet</servlet-name><servlet-class>com.servlet.BuyServlet</servlet-class></servlet><servlet-mapping><servlet-name>BuyServlet</servlet-name><url-pattern>/buy.do</url-pattern></servlet-mapping><servlet><servlet-name>product</servlet-name><servlet-class>com.servlet.productServlet</servlet-class></servlet><servlet-mapping><servlet-name>product</servlet-name><url-pattern>/product.do</url-pattern></servlet-mapping><servlet><servlet-name>PayServlet</servlet-name><servlet-class>com.servlet.PayServlet</servlet-class></servlet><servlet-mapping><servlet-name>PayServlet</servlet-name><url-pattern>/pay.do</url-pattern></servlet-mapping><servlet><servlet-name>DeleteServlet</servlet-name><servlet-class>com.servlet.DeleteServlet</servlet-class></servlet><servlet-mapping><servlet-name>DeleteServlet</servlet-name><url-pattern>/delete.do</url-pattern></servlet-mapping><filter><filter-name>cf</filter-name><filter-class>com.filter.CharacterFilter</filter-class></filter><filter-mapping><filter-name>cf</filter-name><url-pattern>/*</url-pattern></filter-mapping>

監聽CharacterFilter,實現亂碼問題:

package com.filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class CharacterFilter implements Filter{public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain fc) throws IOException, ServletException {//FilterChain 過濾器鏈條request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");//監聽器 session 觸發器 triggle // 聊天室 System.out.println("before filter");fc.doFilter(request, response);System.out.println("after filter");}public void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}}

總結

以上是生活随笔為你收集整理的cookie购物车的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。