1.实现效果图
2.cart.jsp购物车页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>cart</title>
<!--引入bootstrap.css-->
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/css/bootstrap.css"/>
<!--引入myscss.css-->
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/myscss.css" />
<!--bootstrapValidator.css-->
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrapvalidate/css/bootstrapValidator.css" />
<!--引入jquery.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/jquery-3.1.1.js"></script>
<!--bootstrap.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/bootstrap.js"></script>
<!--cart.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/foreground/cart/cart.js"></script>
<!--bootstrapValidator.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrapvalidate/js/bootstrapValidator.js"></script>
<!--contextPath-->
<script type="text/JavaScript">
var contextPath = "${pageContext.request.contextPath}";
</script>
</head>
<body>
<!--公用头部-->
<!-- <div id="navhead"></div> -->
<%@include file="/foreground/common/head.jsp"%>
<!--主体部分-->
<div class="container">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-10">
<!--content头部图片-->
<img src="<%=request.getContextPath()%>/img/otherimages/buy1.gif" />
<!--content中的table-->
<div class="panel panel-info margintop">
<div class="panel-heading text-center"><h4><strong>购物车列表</strong></h4></div>
<div id="cartable">
<!--<table class="table text-center">
<tr class="danger">
<th class="text-center">序号</th>
<th class="text-center">商品名称</th>
<th class="text-center">价格</th>
<th class="text-center">购买数量</th>
<th class="text-center">库存</th>
<th class="text-center">小计</th>
</tr>
<tr>
<td>0</td>
<td>Java模式</td>
<td>21.5</td>
<td><a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>1<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a></td>
<td>100</td>
<td>21.5</td>
</tr>
<tr>
<td>1</td>
<td>JavaScript</td>
<td>18.5</td>
<td>1</td>
<td>100</td>
<td>18.5</td>
</tr>
</table>-->
</div>
<div class="panel-footer clearfix"><span id="totalprice" class="pull-right">总计</span></div>
</div>
<form id="orderform" class="form-horizontal">
<div class="form-group">
<label for="receiverAddress" class="col-md-1 control-label">地址</label>
<div class="col-md-4">
<input type="text" class="form-control" name="receiverAddress" id="receiverAddress" placeholder="请输入收货地址">
</div>
</div>
<div class="form-group">
<label for="receiverName" class="col-md-1 control-label">收货人</label>
<div class="col-md-4">
<input type="text" class="form-control" id="receiverName" name="receiverName" placeholder="请输入收货人姓名">
</div>
</div>
<div class="form-group">
<label for="receiverPhone" class="col-md-1 control-label">电话</label>
<div class="col-md-4">
<input type="text" class="form-control" id="receiverPhone" name="receiverPhone" placeholder="请输入收货人电话">
</div>
</div>
<div class="form-group">
<div class="col-md-12 text-right">
<a href="<%=request.getContextPath()%>/foreground/book/home.jsp">
<input type="button" value="" style="background:url('<%=request.getContextPath()%>/img/otherimages/gwc_jx.gif') no-repeat;width:130px;height:45px;border:0px"/>
</a>
<a href="<%=request.getContextPath()%>/foreground/user/user.jsp">
<input type="submit" id="submitform" value="" style="background:url('<%=request.getContextPath()%>/img/otherimages/gwc_buy.gif') no-repeat;width:130px;height:45px;border:0px"/>
</a>
</div>
</div>
</form>
</div>
<div class="col-md-1"></div>
</div>
</div>
<!--显示弹出框让用户登录-->
<div id="showloginform">
</div>
</body>
</html>
3.cart.js
//购物车动态添加购物车信息
$(function(){
//1.从localStorage获取购物信息
var books = localStorage.getItem("carts");
var bookArr = JSON.parse(books);//将获取到的字符串存放进数组中
//2.声明一个html用来拼接页面
var html = "";
html += "<table id='cart' class='table text-center'>";
html += "<tr class='danger'>";
html += "<th class='text-center'>序号</th>";
html += "<th class='text-center'>商品名称</th>";
html += "<th class='text-center'>价格</th>";
html += "<th class='text-center'>购买数量</th>";
html += "<th class='text-center'>库存</th>";
html += "<th class='text-center'>小计</th>";
html += "</tr>";
//3.遍历数组
for(var i = 0;i < bookArr.length;i++){
//获取一本书
var abook = bookArr[i];
//将书本的信息填到表格中
html += "<tr>";
html += "<td>"+i+"</td>";
html += "<td>"+abook.name+"</td>";
html += "<td>"+abook.price+"</td>";
html += "<td><a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>"+abook.buynum+"<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a></td>";
html += "<td>"+abook.num+"</td>";
html += "<td>"+abook.price*abook.buynum+"</td>";
html += "</tr>";
}
html += "</table>";
$("#cartable").html(html);
});
//点击减号按钮
function subBuyNum(caller){
calFunction(caller,"sub");
}
//点击加号按钮
function addBuyNum(caller){
calFunction(caller,"add");
}
//优化代码
function calFunction(caller,tag){
//得到当前调用者的父节点
var $parent = $(caller).parent();
//得到当前调用者的父节点的下一个兄弟
var $bro = $(caller).parent().next();
//找到父节点的文本信息
var buyNum = parseInt($parent.text());
var num = parseInt($bro.text());
//判断当前是+还是-
if(tag == "sub"){
//减号
if(buyNum>=2){
buyNum--;
num++;
}
}
//加号
else{
buyNum++;
num--;
}
//4.拼接html信息,把html放到parent中
var html = "";
html += "<a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>"+buyNum+"<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a>";
$parent.html(html);
$bro.html(num);
//5.找到价格元素的信息
var $price = $parent.prev();
var price = parseFloat($price.text());
//6.修改小计元素的信息
var $lastB = $parent.next().next();
$lastB.text(price*buyNum);
//7.修改总计元素的信息
calTotal();
//8.修改本地购物车的数量
//8.1找到序号数列
var $first = $parent.parent().children(":first-child");
var n = parseInt($first.text());
modiyBuyNum(n,buyNum,num);
}
//计算当前购物车的总价格
function calTotal(){
var $totalPrice = $("#totalprice");
//找到table里面的tbody,其实table的所有正文信息都放在tbody里面
var $table = $("#cart").children();
var $children = $table.children(":not(:first)");
var $rowprices = $children.children(":last-child");
var totalp = 0;
$rowprices.each(function(){
var p = parseFloat($(this).text());
totalp += p;
})
$totalPrice.text("总计:"+totalp);
}
//页面一载入就计算总计购物车的总价信息
$(function(){
calTotal();
})
//修改本地购物车的数量
function modiyBuyNum(idx,buynum,num){
//1.获取本地购车的数据(字符串)
var books = localStorage.getItem("carts");
//2.把字符串转换为数组对象
var bookArr = JSON.parse(books);
//3.从数组中获取指定idx的数据
var abook = bookArr[idx];
//4.修改这条数据
abook.buynum = buynum;
abook.number = num;
//5.重新保存购物车
var booksStr = JSON.stringify(bookArr);
localStorage.setItem("carts",booksStr);
}
//表单验证的方法,使用bootstrapValidator插件来完成
$(function(){
$("#orderform").bootstrapValidator({
feedbackIcons : {
valid : 'glyphicon glyphicon-ok',
invalid : 'glyphicon glyphicon-remove',
validating : 'glyphicon glyphicon-refresh'
},
fields : {
receiverAddress : {
validators : {
notEmpty : {
message : '地址不能为空'
},
stringLength : {
min : 2,
max : 18,
message : '地址必须在2到18位之间'
}
}
},
receiverName : {
validators : {
notEmpty : {
message : '姓名不能为空'
},
stringLength : {
min : 2,
max : 18,
message : '姓名长度必须在2到18位之间'
}
}
},
receiverPhone : {
validators : {
notEmpty : {
message : '电话不能为空'
},
regexp : {
regexp : /^1[0-9]{10}$/,
message : '电话格式不正确'
}
}
}
}
}).on("success.form.bv", function(e) {
/*alert("sucess");*/
});
});
//在购物车没有数据、用户没有输入送货地址等信息的情况下,不需要检查用户的登录情况(不需要发送ajax)
$(function(){
$("#submitform").click(function(){
//1.从localStorage获取所存的购物车信息
var books = localStorage.getItem("carts");
var bookArr = JSON.parse(books);
//2.如果bookArr不存在或者数据长度为0,则不允许提交表单
if(bookArr == null){
return false;
}
if(bookArr.length == 0){
return false;
}
//3.如果输入框没有内容,禁止提交表单
var inputisnull = false;
$(":text").each(function(){
if($(this).val().length == 0){
inputisnull = true;
}
});
if(inputisnull == true){
alert("请输入地址,收货人和电话");
return false;
}
//4.使用Ajax检查用户是否登录
var sendUrl = contextPath+"/AjaxCheckIsLoginServlet?time="+new Date().getTime();
$.ajax({
type:"post",
url:sendUrl,
asasync:true,
//请求成功回调函数
success:function(backData,textStatus,xmlHttpRequest){
if(backData == "yes"){
//提交订单
commitOrder();
}
//如果用户没有登录
else{
alert("sdfsdf");
//显示登录页面
showLoginPage();
}
}
});
return false;
});
});
//发送ajax请求,提交订单
function commitOrder(){
//1.从localStorage获取所存的购物车信息
var orderitems = localStorage.getItem("carts");
//2.发送ajax请求,订单提交数据
var sendUrl = contextPath+"/AjaxMakeOrderServlet?"+"time"+new Date().getTime()+"&totalprice="+$("#totalprice").text().substr(3);
$.ajax({
type:"post",
url:sendUrl,
data:{
"orderitems":orderitems,
"receiverAddress":$("#receiverAddress").val(),
"receiverName":$("#receiverName").val(),
"receiverPhone":$("#receiverPhone").val()
},
async:true,
success:function(backData,textStatus,xmlHttpRequest){
var jsonobj = JSON.parse(backData);
if("success" == jsonobj.status){
//清空购物车
localStorage.removeItem("carts");
//跳转页面
window.location.href = contextPath+"/foreground/cart/makeordersuccess.jsp?orderid="+jsonobj.orderid+"&totalprice="+jsonobj.totalprice;
}
}
});
}
//显示登录弹出的模态框
function showLoginPage(){
alert("OK");
var html = "";
html+="<div>";
html+= "<div class='modal fade' tabindex='0' id='myModal2'>";
html+= "<div class='modal-dialog' >";
html+= "<div class='modal-content'>";
html+= "<div class='modal-header text-center'>";
html+= "<button type='button' class='close' data-dismiss='modal'><span>×</span></button>";
html+= "<h4 class='modal-title'>用户登录</h4>";
html+= "</div>";
html+= "<div class='modal-body paddingtop'>";
html+= "<p class='text-danger text-center' id='loginmsg'></p>"
html+= "<form id='loginform' class='form-horizontal'>";
html+= "<div class='form-group'>";
html+= "<label for='name' class='col-md-4 control-label'>用户名</label>";
html+= "<div class='col-md-4'>";
html+= "<input type='text' class='form-control' name='name' id='name' placeholder='请输入用户名'>";
html+= "</div>";
html+= "</div>";
html+= "<div class='form-group'>";
html+= "<label for='pass' class='col-md-4 control-label'>密码</label>";
html+= "<div class='col-md-4'>";
html+= "<input type='password' class='form-control' id='pass' name='pass' placeholder='请输入密码'>";
html+= "</div>";
html+= "</div>";
html+= "<div class='form-group text-center'>";
html+= "<input type='button' onclick='submitlogin()' class='btn btn-success' style='width: 200px;' value='登录'/>";
html+= "</div>";
html+= "</form>";
html+= "</div>";
html+= "</div>";
html+= "</div>";
html+= "</div>";
html+="</div>";
$("#showloginform").html(html);
$("#myModal2").modal('show');
}
//用户在弹出登录框中输入用户密码,提交表单的事件
function submitlogin(){
var formData = $("#loginform").serialize();
var sendUrl = contextPath+"/AjaxDoCartLoginServlet?&time="+new Date().getTime();
$.ajax({
type:"post",
url:sendUrl,
data:formData,
async:true,
success:function(backData,textStatus,xmlHttpRequest){
if("success" == backData){
$("#loginmsg").html("登录成功,3秒后跳转页面");
var time = setInterval(function(){
clearInterval(time);
//提交order表单数据,生成订单
commitOrder();
},3000);
}
else{
//提示登录出错信息
$("#loginmsg").html(backData);
}
}
});
}
4.makeordersuccess.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>
<!--引入bootstrap.css-->
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/css/bootstrap.css"/>
<!--引入myscss.css-->
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/myscss.css" />
<!--引入jquery.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/jquery-3.1.1.js"></script>
<!--bootstrap.js-->
<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/bootstrap.js"></script>
</head>
<body>
<%@ include file="/foreground/common/head.jsp" %>
<div class="container">
<h3 class="text-success">订单提交成功,请您尽快支付!订单号:${param.orderid }</h3>
<p class="text-warning">请在24小时之内完成支付,否则订单会被自动取消</p>
<p class="text-danger">应付款金额:${param.totalprice }</p>
</div>
</body>
</html>
5.OrderDao.java,OrderDao接口
package com.chinasoft.dao;
import java.sql.SQLException;
import java.util.List;
import com.chinasoft.entity.Order;
public interface OrderDao {
//添加一个订单
public void addOrder(Order order) throws SQLException;
//根据用户id查找该用户的所有订单
public List<Order> findOrdersByUserId(int id) throws SQLException;
//根据订单id查询订单
public Order findOrdersByOrderId(String orderid) throws SQLException;
//跟新指定订单id的订单状态信息
public void modifyOrderState(String orderid) throws SQLException;
//删除订单
public void deleteOrder(Order order) throws SQLException;
}
6.OrderItemDao.java,OrderItem接口
package com.chinasoft.dao;
import java.sql.SQLException;
import java.util.List;
import com.chinasoft.entity.Order;
import com.chinasoft.entity.OrderItem;
public interface OrderItemDao {
//添加一个订单子单项
public void addOrderItem(Order order) throws SQLException;
//根据订单id查询该订单的所有订单项
public List<OrderItem> findOrderItemsByOrderId(String orderid) throws SQLException;
//根据子单的订单id删除订单子单
public void deleteOrderItem(OrderItem orderitem) throws SQLException;
}
7.ImplOrderDao.java,OrderDao实现类
package com.chinasoft.dao.impl;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.chinasoft.dao.OrderDao;
import com.chinasoft.entity.Order;
import com.chinasoft.entity.OrderItem;
import com.chinasoft.entity.User;
import com.chinasoft.util.C3P0Util;
public class ImplOrderDao implements OrderDao{
/**
* 添加一个订单
*/
@Override
public void addOrder(Order order) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
//插入订单基本信息
qr.update("insert into orders(id,money,receiverAddress,receiverName,receiverPhone,payState,user_id) values(?,?,?,?,?,?,?)",
order.getId(),order.getMoney(),order.getReceiverAddress(),order.getReceiverName(),order.getReceiverPhone(),order.getPaystate(),order.getUser().getId());
//订单的子单信息(具体所买的商品信息)
ImplOrderItemDao implOrderItemDao = new ImplOrderItemDao();
implOrderItemDao.addOrderItem(order);
}
/***
* 查找某个用户的所有订单
*/
@Override
public List<Order> findOrdersByUserId(int id) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
//1.查找该用户的所有订单
List<Order> orders = qr.query("select * from orders where user_id = ?", new BeanListHandler<>(Order.class),id);
//2.根据用户id查询该用户的具体信息
ImplUserDao implUserDao = new ImplUserDao();
User u = implUserDao.findUserById(Integer.toString(id));
//3.订单子单项的实现类
ImplOrderItemDao implOrderItemDao = new ImplOrderItemDao();
//4.遍历每一个订单
for(Order o : orders){
//查询该订单的具体子单项
List<OrderItem> items = implOrderItemDao.findOrderItemsByOrderId(o.getId());
//子单项设置对应 的订单信息
for(OrderItem item:items){
item.setOrder_id(o.getId());
}
//该订单设置对应的子单和用户信息
o.setOrderitems((ArrayList<OrderItem>)items);
o.setUser(u);
}
return orders;
}
/**
* 根据订单id查询指定订单
*/
@Override
public Order findOrdersByOrderId(String orderid) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
Order order = qr.query("select * from orders where id = ?", new BeanHandler<>(Order.class),orderid);
return order;
}
/**
* 修改订单状态
*/
@Override
public void modifyOrderState(String orderid) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("update orders set paystate = ? where id = ?", "1",orderid);
}
/**
* 删除订单
*/
@Override
public void deleteOrder(Order order) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
//先删OrderItem表
for(OrderItem item : order.getOrderitems()){
ImplOrderItemDao implOrderItemDao = new ImplOrderItemDao();
implOrderItemDao.deleteOrderItem(item);
}
//再删Order表
qr.update("delete from orders where id = ?",order.getId());
}
}
8.ImplOrderItemDao.java,OrderItemDao实现类
package com.chinasoft.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.chinasoft.dao.OrderItemDao;
import com.chinasoft.entity.Order;
import com.chinasoft.entity.OrderItem;
import com.chinasoft.entity.Product;
import com.chinasoft.util.C3P0Util;
public class ImplOrderItemDao implements OrderItemDao{
/**
* 添加订单的子单项
*/
@Override
public void addOrderItem(Order order) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
//把每一个订单的子单插入到数据库
for(OrderItem item : order.getOrderitems()){
qr.update("insert into orderitem values(?,?,?)", order.getId(),item.getProduct_id(),item.getBuynum());
}
}
/**
* 查找某一个订单的所有子单
*/
@Override
public List<OrderItem> findOrderItemsByOrderId(String orderid) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
//根据订单查询所有的订单项
List<OrderItem> items = qr.query("select * from orderitem where order_id = ?", new BeanListHandler<>(OrderItem.class), orderid);
ImplProductDao implProductDao = new ImplProductDao();
for(OrderItem item : items){
//查询订单项的书籍信息
Product product = implProductDao.findBookById(item.getProduct_id());
//订单项关联书籍
item.setProduct(product);
}
return items;
}
/**
* 根据子单的订单id删除订单子单
*/
@Override
public void deleteOrderItem(OrderItem orderitem) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("delete from orderitem where order_id = ?",orderitem.getOrder_id());
}
}
9.AjaxCheckIsLoginServlet.java,检测用户是否登录
package com.chinasoft.servlet;
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 com.chinasoft.entity.User;
/**
* @author jf
* 功能:检测用户是否登录
*/
@WebServlet("/AjaxCheckIsLoginServlet")
public class AjaxCheckIsLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public AjaxCheckIsLoginServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//获取浏览器中存储的session对象
User user = (User) request.getSession().getAttribute("user");
//user不为空,说明用户已经登录
if(user!=null){
response.getWriter().write("yes");
}else{
response.getWriter().write("no");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
10.AjaxMakeOrderServlet.java,向数据库插入订单项
package com.chinasoft.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
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 com.chinasoft.dao.impl.ImplOrderDao;
import com.chinasoft.entity.Order;
import com.chinasoft.entity.OrderItem;
import com.chinasoft.entity.User;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* @author jf
* 功能:向数据库插入订单项
*/
@WebServlet("/AjaxMakeOrderServlet")
public class AjaxMakeOrderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public AjaxMakeOrderServlet() {
super();
}
@SuppressWarnings({ "unchecked", "static-access" })
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取请求参数
String receiverAddress = request.getParameter("receiverAddress");
String receiverName = request.getParameter("receiverName");
String receiverPhone = request.getParameter("receiverPhone");
String oitems = request.getParameter("orderitems");
String totalPrice = request.getParameter("totalprice");
//2.引入json需要的jar包
//3.把oitems解析长订单的子单对象
JSONArray jarr = JSONArray.fromObject(oitems);
List<OrderItem> orderItems = jarr.toList(jarr,OrderItem.class);
//4.生成订单对象
Order order = new Order();
order.setId(UUID.randomUUID().toString());
order.setMoney(Float.parseFloat(totalPrice));
order.setReceiverAddress(receiverAddress);
order.setReceiverName(receiverName);
order.setReceiverPhone(receiverPhone);
order.setPaystate(0);
//5.遍历订单子单,设置子单关联的订单id
for(OrderItem item : orderItems){
item.setOrder_id(order.getId());
}
//6.设置订单关联的子单以及订单关联的用户信息
order.setOrderitems((ArrayList<OrderItem>)orderItems);
// ImplUserDao implUserDao = new ImplUserDao();
User user = (User) request.getSession().getAttribute("user");
order.setUser(user);
//7.插入订单
ImplOrderDao implOrderDao = new ImplOrderDao();
try {
implOrderDao.addOrder(order);
//8.拼接JSON数据返回客户端
HashMap<String,String> map = new HashMap<>();
map.put("totalprice", totalPrice);
map.put("orderid", order.getId());
map.put("status", "success");
String json = JSONObject.fromObject(map).toString();
response.getWriter().write(json);
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
11.AjaxDoCartLoginServlet.java提交购物车的时候,如果用户没有登录,则弹出登录框让用户登录,此处处理弹出框登录的逻辑
package com.chinasoft.servlet;
import java.io.IOException;
import java.sql.SQLException;
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 com.chinasoft.dao.impl.ImplUserDao;
import com.chinasoft.entity.User;
/**
* @author jf
* 功能:提交购物车的时候,如果用户没有登录,则弹出登录框让用户登录,此处处理弹出框登录的逻辑
*/
@WebServlet("/AjaxDoCartLoginServlet")
public class AjaxDoCartLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public AjaxDoCartLoginServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取ajax请求过来的账号和密码
String name = request.getParameter("name");
String pass = request.getParameter("pass");
//2.根据账号密码查询数据库
ImplUserDao implUserDao = new ImplUserDao();
try {
//2-1找到用户保存用户
User user = implUserDao.findUserByUserNameAndPassword(name, pass);
if(user!=null){
request.getSession().setAttribute("user", user);
response.getWriter().write("success");
}
//2-2没有找到用户存储,没有找到用户信息
else{
response.getWriter().write("此用户不存在");
}
//2-3发生错误储存错误信息
} catch (SQLException e) {
response.getWriter().write(e.getMessage());
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}