007 Ajax中的购物车
1.大纲设计

2.shopingCartItem.java
package beans;
public class shopingCartItem {
private String bookname;//书对象
private int num; //书的数量
private int price; // 书的价格
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
3.shopingCart.java
package beans; import java.util.HashMap;
import java.util.Map; public class shopingCart {
//存放shopingCartItem的map,键是书名,值是shopingCartItem对象
private Map<String,shopingCartItem> items=new HashMap<>();
/**
* 将书名与书的价格添加到购物车
* @param bookName
* @param price
*/
public void addToCart(String bookName,int price) {
if(items.containsKey(bookName)) {
shopingCartItem item=items.get(bookName);
item.setNum(item.getNum()+1);
}else {
shopingCartItem item=new shopingCartItem();
item.setBookname(bookName);
item.setPrice(price);
item.setNum(1);
items.put(bookName, item);
}
}
/**
* 返回书的总数量
* @return
*/
public int totalBookNumer() {
int totalNum=0;
for(shopingCartItem item:items.values()) {
totalNum+=item.getNum();
}
return totalNum;
}
/**
* 返回书的总价钱
*/
public int totalBookPrice() {
int totalPrice=0;
for(shopingCartItem item:items.values()) {
totalPrice+=item.getNum()*item.getPrice();
}
return totalPrice;
}
}
4.AddToCartServlet.java
package servlets; import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import beans.shopingCart; public class AddToCartServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求参数
String bookName=request.getParameter("id");
int price=Integer.parseInt(request.getParameter("price"));
//获取购物车对象
HttpSession session=request.getSession();
shopingCart sc=(shopingCart)session.getAttribute("sc");
if(sc==null) {
sc=new shopingCart();
session.setAttribute("sc", sc);
}
//将点击的事件放入购物车
sc.addToCart(bookName, price);
//准备响应的JSON对象
StringBuilder result=new StringBuilder();
result.append("{")
.append("\"bookName\":\""+bookName+"\"")
.append(",")
.append("\"totalBookName\":\""+sc.totalBookNumer()+"\"")
.append(",")
.append("\"totalPrice\":\""+sc.totalBookPrice()+"\"")
.append("}"); //响应JSON对象
response.setContentType("text/javascript");
response.getWriter().print(result.toString());
} }
5.index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/shopcart/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("a").click(function(){
alert(1);
var url=this.href;
var args={"time":new Date()};
$.getJSON(url,args,function(data){
$("#bookName").text(data.bookName);
$("#totalBookName").text(data.totalBookName);
$("#totalPrice").text(data.totalPrice);
});
return false;
})
})
</script>
</head>
<body>
你已经将 <span id="bookName"></span> 加入到购物车中,
购物车中有 <span id="totalBookName"></span> 本书,
总价 <span id="totalPrice"></span> <br><br> Java<a href="${pageContext.request.contextPath}/addToCart?id=java&price=100">加入购物车</a><br>
Oracle<a href="${pageContext.request.contextPath}/addToCart?id=Oracle&price=100">加入购物车</a><br>
Ajax<a href="${pageContext.request.contextPath}/addToCart?id=Ajax&price=100">加入购物车</a><br>
</body>
</html>
6.效果

007 Ajax中的购物车的更多相关文章
- 转:AJAX中xhr对象详解
XJAX ,并不是一种新技术的诞生.它实际上代表的是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用. 它包括: 使用XHTML和CSS标准化呈现: 使用DOM实现动态显示和交互: 使用XML ...
- Ajax中的get和post两种请求方式的异同
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别. 1. get是把参数数据队列加到提交表单的A ...
- ajax中加上AntiForgeryToken防止CSRF攻击
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...
- ajax中的application/x-www-form-urlencoded中的使用
ajax中的application/x-www-form-urlencoded中的使用一,HTTP上传的基本知识 在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定 ...
- ajax中网页传输(三)XML——下拉列表显示练习
XML:页面之间传递数据,跨平台传递 HTML:超文本标记语言,核心标签 XML的形势为 <xml version='1.0'> <Nation> <one> &l ...
- ajax中网页传输(一)TEXT——带有删除功能的数据库表格显示练习
网页之间传输的三种方式:TEXT.JSON.XML. 本章将讲解带有TEXT形势的ajax网页传输 第一:body部分代码 <title>ajax中TEXT讲解并且带有删除功能的表格< ...
- 记得ajax中要带上AntiForgeryToken防止CSRF攻击
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- 【转】Ajax中send方法参数的使用(get/post)
Ajax中send方法参数的使用 一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : ...
随机推荐
- windows之tracert命令
tracert命令是使用从本地到目标网站所在网络服务器的一系列网络节点的访问速度, 网络节点最多支持显示30个.命令格式是tracert加空格加目标网站名称(也可以输入目标网站的IP地址). 先以百度 ...
- [USACO4.3]逢低吸纳Buy Low, Buy Lower
https://daniu.luogu.org/problemnew/show/2687 求方案数: if(f[j]+1==f[i] && a[j]>a[i]) s[i]+=s[ ...
- bzoj千题计划115:bzoj1024: [SCOI2009]生日快乐
http://www.lydsy.com/JudgeOnline/problem.php?id=1024 枚举横着切还是竖着切,一边儿分多少块 #include<cstdio> #incl ...
- 洛谷 P3382 【模板】三分法
https://www.luogu.org/problem/show?pid=3382 题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减. ...
- NGINX配置详解及应用
目录 NGINX 1 1.1 目录结构 1 1.2 基础配置 1 1.3 location 5 1.4 虚拟主机 5 1.5 状态模块 ...
- 《Science》:对年轻科学家的忠告
- Webpack的安装、配置与执行
先用npm安装 npm install webpack -g 然后在项目路径下进行项目安装 npm init # 会自动生成一个package.json文件 npm install webpack - ...
- @Resource,@Autowired,@Inject3种注入方式
概况 @Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中. ANNOTATION PACKAGE SOURCE @Resource javax ...
- 数据库(八)之T-SQL编程
什么是Transact-SQL? 结构化查询语言(SQL)是有美国国家标准协会(ANSI)和国际标准化组织(ISO)定义的标准,而Transact-SQL是Microsoft公司对此标准的一个实现. ...
- 判断最小生成树是否为一(krustra)
题目链接:https://vjudge.net/contest/66965#problem/K 具体思路: 首先跑一遍最短路算法,然后将使用到的边标记一下,同时使用一个数组记录每一个权值出现的次数,如 ...