5.Ajax_典型应用_添加商品

java web项目中ajax 的应用可谓无处在,本文将详细介绍添加操作的反应。

 

需要达到的目标,是点击加入购物车,将在第一行显示将XX加入购物车,购物车总课本数,以及总价。

1.jxnu.edu.xiaozhi.beans包下的ShoppingCart.java类

import java.util.HashMap;
import java.util.Map;

public class ShoppingCart {
    
    //
    private Map<String,ShoppingCartItem> items = new HashMap<String,ShoppingCartItem>();
    public void addToCart(String bookName,int price) {
        
        if(items.containsKey(bookName)) {
            ShoppingCartItem item  = items.get(bookName);
            item.setNumber(item.getNumber() + 1);    
        }else {
            ShoppingCartItem item = new ShoppingCartItem();
            item.setBookName(bookName);
            item.setNumber(1);
            item.setPrice(price);
            items.put(bookName, item);
        }
    }
    
    public int getTotalBookNumber() {
        int total = 0;
        for(ShoppingCartItem item : items.values()) {
            total += item.getNumber();
        }
        return total;
    }
    public int getTotalMoney() {
        int money = 0;
        for(ShoppingCartItem item : items.values()) {
            money += item.getNumber() * item.getPrice();
        }
        return money;
    }
}
2.jxnu.edu.xiaozhi.beans包下的ShoppingCartItem.java

public class ShoppingCartItem {
    private int number;
    
    private int price;
    
    private String bookName;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    
}
3.jxnu.edu.xiaozhi.servlets包下的AddToCartServlet.java

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jxnu.edu.xiaozhi.beans.ShoppingCart;

/**
 * Servlet implementation class AddToCartServlet
 */
@WebServlet("/AddToCartServlet")
public class AddToCartServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddToCartServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        String bookName = request.getParameter("id");
        int price = Integer.parseInt(request.getParameter("price"));
        
       
        HttpSession session = request.getSession();
        ShoppingCart sc = (ShoppingCart)session.getAttribute("sc");
        if(sc == null) {
            sc = new ShoppingCart();
            session.setAttribute("sc",sc);
        }
        
        sc.addToCart(bookName, price);
        
        StringBuffer result = new StringBuffer();
        result.append("{")
                .append(" 'bookName' : ' " + bookName + "'")
                .append(",")
                .append("'totalBookNumber':" + sc.getTotalBookNumber())
                .append(",")
                .append("'totalMoney':" + sc.getTotalMoney())
                .append("}");
        
        response.setContentType("text/html");
        response.getWriter().print(result.toString());
    }

}

4.index.jsp

<!DOCTYPE html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/scripts/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function(){
        $("a").click(function(){
            var url = this.href;
            var args = {"time": new Date()};
            //发请求
            $.getJSON(url,args,function(data){
                $("#bookName").text(data.bookName);
                $("#totalBookNumber").text(data.totalBookNumber);
                $("#totalMoney").text(data.totalMoney);
            });
            return false;
        });    
    });
</script>
<!-- 
1.获取界面所有a节点,设置onClick点击响应函数,同时取消其默认行为
2.准备发送AJAX 应用请求:url(a节点的href属性值);args(时间戳)
3.响应为一个json对象,包括:bookName,totalNumber,totalMoney
4.把对应的属性,添加到对应的位置    
 -->

</head>
<body>
    您已经将&nbsp;<span id="bookName"></span>&nbsp;加入到购物车中.
    购物车中的书有&nbsp;<span id="totalBookNumber"></span>&nbsp;本.
    总价格&nbsp;<span id="totalMoney"></span>&nbsp;元
    <br><br>
    
    Java&nbsp;<a href="${pageContext.request.contextPath }addToCart?id=java&price=150">加入购物车</a>
    <br><br>
    
    Android&nbsp;<a href="${pageContext.request.contextPath }addToCart?id=android&price=200">加入购物车</a>
    <br><br>
    
    Python&nbsp;<a href="${pageContext.request.contextPath }addToCart?id=python&price=100">加入购物车</a>
    <br><br>
</body>
</html>

5.还需要webapp的文件夹下面新建scripts文件夹,将JQuery文件(jquery-3.3.1.js)加入进去

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值