目录
这里只发了一部分,未完善,后期完善
实体有用户和购物车,商品在前端写死了,通过用户名来连接用户表和购物车表。
弊端:
1.逻辑写在了dao层 所以代码逻辑有点乱
过滤器
package com.hyy.taobao.filter;
import com.hyy.taobao.api.entity.User;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter("/*")
public class LoginFilter implements Filter {
/**
* 代表filter对象初始化方法 filter对象创建时执行
*
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
/**
* 代表是filter销毁方法 当filter对象销毁时执行该方法
*/
@Override
public void destroy() {
}
/**
* 代表filter执行过滤的核心方法,
* 如果某资源在已经被配置到这个filter进行过滤的话,
* 那么每次访问这个资源都会执行doFilter方法
*
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 基于HTTP
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
// 得到请求的路径
String path = httpServletRequest.getRequestURI();
// 指定放行页面,即不需要登录就可以进入的页面
if (path.contains("index.jsp")||path.contains("Login.jsp")||path.contains("insertUserWeb.jsp")){
// 放行
filterChain.doFilter(servletRequest,servletResponse);
return;
}
// 2、放行静态页面(例如CSS、JS、Image等资源)
if (path.contains("/js")){
filterChain.doFilter(servletRequest, servletResponse);
return;
}
// 3、放行指定操作:不需要登录即可进行的操作(如登录操作、注册操作)
// 检查你是否在做登录或注册操作 是 放行 否则拦截
if (path.contains("/insertUser")||path.contains("/login")){
filterChain.doFilter(servletRequest,servletResponse);
return;
}
User myUser = (User) httpServletRequest.getSession().getAttribute("myUser");
if (myUser != null) {
filterChain.doFilter(servletRequest,servletResponse);
return;
}
httpServletResponse.sendRedirect("index.jsp");
return;
}
}
监听器
package com.hyy.taobao.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class InitLoginCountListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("onlineCount",0);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
package com.hyy.taobao.listener;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MaxLoginCountListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
int onlineCount = (int) servletContext.getAttribute("onlineCount");
onlineCount++;
servletContext.setAttribute("onlineCount",onlineCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
int onlineCount = (int) servletContext.getAttribute("onlineCount");
onlineCount--;
servletContext.setAttribute("onlineCount",onlineCount);
}
}
# 连接数据库代码封装类
import java.sql.*;
/**
* 连接数据库的代码,封装到类中,可以使代码更加简洁。
* JDBC连接数据库:
* 1.加载驱动
* 2.获取连接
* 3.获取数据库操作对象
* 4.执行sql语句
* 5.处理结果集
* 6.释放资源
* 在封装类中只需要写1.2.6.即可!
*/
public class DBUtil {
private static String driver = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/taobao";
private static String userName = "root";
private static String password = "020826";
/**
* 静态代码块
* 静态代码块在类加载时仅仅执行一次
* 达到在类加载的时候就加载驱动
*/
static {
/**
* 加载驱动
*/
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection connection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
/**
* 关闭 Statement 时使用
* @param resultSet
* @param statement
* @param connection
*/
public static void close(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null) {
resultSet.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (statement != null) {
statement.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
/**
*关闭 preparedStatement 时使用
* @param resultSet
* @param preparedStatement
* @param connection
*/
public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) {
try {
if (resultSet != null) {
resultSet.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (preparedStatement != null) {
preparedStatement.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
JDBC配置文件
checkSql=select userName from user1 where userName = ?;
insertSql=insert into user1 (userName,userPassword,userSecurityQuestion,userSecurityAnswer) values(?,?,?,?);
deleteSql=delete from user1 where userName=? and userPassword=? and userSecurityAnswer=?;
checkGoodSql = select * from myCart where userName = ?;
deleteGoodsSql = delete from myCart where userName = ?;
userLoginSql=select * from user1 where userName = ? and userPassword = ?;
updateSql=update user1 set userPassword = ? where userName = ?;
checkMyCartSql=select * from myCart where userName =? and goodsName = ?;
myCartInsertSql=insert into myCart (userName,goodsName,goodsPrice,goodsNumber) values(?,?,?,?);
myCartInsert_updateSql=update myCart set goodsNumber=? where userName =? and goodsName = ?;
myCartSelectGoodsSql=select goodsName,goodsPrice,goodsNumber from myCart where userName = ?;
myCartDeleteGoodsSql=delete from myCart where userName =? and goodsName = ?;
myCartDeleteGoodsUpdateSql=update myCart set goodsNumber=? where userName =? and goodsName = ?;
myCartDeleteAllGoodsSql = delete from myCart where userName = ?;
dao层(数据库访问层)
接口没有发出来,下面的是实现类。
UserDaoImpl.java
用户
package com.hyy.taobao.dao.impl;
import com.hyy.taobao.api.entity.User;
import com.hyy.taobao.api.util.DBUtil;
import com.hyy.taobao.dao.IUserDao;
import java.sql.*;
import java.util.ResourceBundle;
public class UserDaoImpl implements IUserDao {
@Override
public boolean insertUser(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String checkSql = resourceBundle.getString("checkSql");
String insertSql = resourceBundle.getString("insertSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(checkSql);
preparedStatement.setString(1, user.getUserName());
resultSet = preparedStatement.executeQuery();
if (!"".equals(user.getUserName()) || !"".equals(user.getUserPassword()) || !"".equals(user.getSecurityQuestion()) || user.getSecurityAnswer() != "") {
if (!resultSet.next()) {
preparedStatement = connection.prepareStatement(insertSql);
preparedStatement.setString(1, user.getUserName());
preparedStatement.setString(2, user.getUserPassword());
preparedStatement.setString(3, user.getSecurityQuestion());
preparedStatement.setString(4, user.getSecurityAnswer());
preparedStatement.executeUpdate();
} else {
System.out.println("用户已存在!");
return false;
}
} else {
return false;
}
} catch (Exception e) {
System.out.println("注册用户失败!");
e.printStackTrace();
return false;
} finally {
DBUtil.close(resultSet, preparedStatement, connection);
}
return true;
}
@Override
public boolean deleteUser(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String checkSql = resourceBundle.getString("checkSql");
String deleteSql = resourceBundle.getString("deleteSql");
String checkGoodSql = resourceBundle.getString("checkGoodSql");
String deleteGoodsSql = resourceBundle.getString("deleteGoodsSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(checkSql);
preparedStatement.setString(1, user.getUserName());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
preparedStatement = connection.prepareStatement(deleteSql);
preparedStatement.setString(1, user.getUserName());
preparedStatement.setString(2, user.getUserPassword());
preparedStatement.setString(3, user.getSecurityAnswer());
int count = preparedStatement.executeUpdate();
if (count == 0) {
return false;
}
preparedStatement = connection.prepareStatement(checkGoodSql);
preparedStatement.setString(1, user.getUserName());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
preparedStatement = connection.prepareStatement(deleteGoodsSql);
preparedStatement.setString(1, user.getUserName());
int count1 = preparedStatement.executeUpdate();
} else {
System.out.println("用户购物车里没有东西!");
}
} else {
System.out.println("用户可能不存在/用户信息错误!");
return false;
}
} catch (Exception e) {
System.out.println("dao用户删除失败!");
e.printStackTrace();
return false;
} finally {
DBUtil.close(resultSet, preparedStatement, connection);
}
return true;
}
@Override
public User userLogin(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
User MyUser;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String userLoginSql = resourceBundle.getString("userLoginSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(userLoginSql);
preparedStatement.setString(1, user.getUserName());
preparedStatement.setString(2, user.getUserPassword());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
String userName = resultSet.getString("userName");
String userPassword = resultSet.getString("userPassword");
String question = resultSet.getString("userSecurityQuestion");
String answer = resultSet.getString("userSecurityAnswer");
MyUser = new User(userName, userPassword, question, answer);
} else {
System.out.println("用户可能不存在/用户信息错误!");
return null;
}
} catch (Exception e) {
System.out.println("dao用户登录失败!");
e.printStackTrace();
return null;
} finally {
DBUtil.close(resultSet, preparedStatement, connection);
}
return MyUser;
}
@Override
public boolean updateUser(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String checkSql = resourceBundle.getString("checkSql");
String updateSql = resourceBundle.getString("updateSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(checkSql);
preparedStatement.setString(1, user.getUserName());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
preparedStatement = connection.prepareStatement(updateSql);
preparedStatement.setString(1, user.getUserPassword());
preparedStatement.setString(2, user.getUserName());
preparedStatement.executeUpdate();
} else {
System.out.println("用户信息修改失败");
return false;
}
} catch (Exception e) {
System.out.println("用户信息修改失败!");
e.printStackTrace();
return false;
} finally {
DBUtil.close(resultSet, preparedStatement, connection);
}
return true;
}
}
MyCartDaoImpl.java
购物车
package com.hyy.taobao.dao.impl;
import com.hyy.taobao.api.entity.MyCart;
import com.hyy.taobao.api.util.DBUtil;
import com.hyy.taobao.dao.IMyCartDao;
import java.sql.*;
import java.util.HashSet;
import java.util.ResourceBundle;
import java.util.Set;
public class MyCartDaoImpl implements IMyCartDao {
@Override
public boolean myCartInsertGoods(MyCart myCart) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String checkMyCartSql = resourceBundle.getString("checkMyCartSql");
String myCartInsertSql = resourceBundle.getString("myCartInsertSql");
String myCartInsertUpdateSql = resourceBundle.getString("myCartInsert_updateSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(checkMyCartSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.setString(2, myCart.getGoodsName());
resultSet = preparedStatement.executeQuery();
if (!resultSet.next()) {
preparedStatement = connection.prepareStatement(myCartInsertSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.setString(2, myCart.getGoodsName());
preparedStatement.setInt(3, myCart.getGoodsPrice());
preparedStatement.setInt(4, myCart.getGoodsNumber());
preparedStatement.executeUpdate();
} else {
int goodsNumber = resultSet.getInt("goodsNumber");
int newNumber = myCart.getGoodsNumber() + goodsNumber;
preparedStatement = connection.prepareStatement(myCartInsertUpdateSql);
preparedStatement.setInt(1, newNumber);
preparedStatement.setString(2, myCart.getUserName());
preparedStatement.setString(3, myCart.getGoodsName());
preparedStatement.executeUpdate();
}
} catch (Exception e) {
System.out.println("添加失败咯!");
e.printStackTrace();
return false;
} finally {
DBUtil.close(resultSet,preparedStatement,connection);
}
return true;
}
@Override
public Set<MyCart> myCartSelectGoods(MyCart myCart) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Set<MyCart> myCartSet = new HashSet<>();
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String myCartSelectGoodsSql = resourceBundle.getString("myCartSelectGoodsSql");
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(myCartSelectGoodsSql);
preparedStatement.setString(1, myCart.getUserName());
resultSet = preparedStatement.executeQuery();
if (resultSet != null) {
while (resultSet.next()) {
String goodsName = resultSet.getString("goodsName");
int goodsPrice = resultSet.getInt("goodsPrice");
int goodsNumber = resultSet.getInt("goodsNumber");
MyCart myCart1 = new MyCart(goodsName, goodsPrice, goodsNumber);
myCartSet.add(myCart1);
}
} else {
return null;
}
} catch (Exception e) {
System.out.println("查看失败!");
e.printStackTrace();
return null;
} finally {
DBUtil.close(resultSet,preparedStatement,connection);
}
return myCartSet;
}
@Override
public boolean myCartDeleteGoods(MyCart myCart, int judgement) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResourceBundle resourceBundle = ResourceBundle.getBundle("JDBC");
String checkMyCartSql = resourceBundle.getString("checkMyCartSql");
String myCartDeleteGoodsSql = resourceBundle.getString("myCartDeleteGoodsSql");
String myCartDeleteGoodsUpdateSql = resourceBundle.getString("myCartDeleteGoodsUpdateSql");
String myCartDeleteAllGoodsSql = resourceBundle.getString("myCartDeleteAllGoodsSql");
try {
connection = DBUtil.getConnection();
if (judgement == 10) {
preparedStatement = connection.prepareStatement(myCartDeleteAllGoodsSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.executeUpdate();
} else {
preparedStatement = connection.prepareStatement(checkMyCartSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.setString(2, myCart.getGoodsName());
resultSet = preparedStatement.executeQuery();
if (judgement == 0 && resultSet != null) {
resultSet.next();
preparedStatement = connection.prepareStatement(myCartDeleteGoodsSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.setString(2, myCart.getGoodsName());
preparedStatement.executeUpdate();
} else if ((judgement == 1 || judgement == -1) && resultSet != null) {
resultSet.next();
int goodsNumber = resultSet.getInt("goodsNumber");
int newGoodsNumber = judgement + goodsNumber;
preparedStatement = connection.prepareStatement(myCartDeleteGoodsUpdateSql);
preparedStatement.setInt(1, newGoodsNumber);
preparedStatement.setString(2, myCart.getUserName());
preparedStatement.setString(3, myCart.getGoodsName());
preparedStatement.executeUpdate();
if (judgement == -1 && goodsNumber == 1) {
preparedStatement = connection.prepareStatement(myCartDeleteGoodsSql);
preparedStatement.setString(1, myCart.getUserName());
preparedStatement.setString(2, myCart.getGoodsName());
preparedStatement.executeUpdate();
}
}
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
DBUtil.close(resultSet,preparedStatement,connection);
}
return true;
}
}
Controller层(在这里充当web层)
这里只发了用户登录和商品删除
UserLoginServlet.java
package com.hyy.taobao.controller;
import com.hyy.taobao.api.IUserService;
import com.hyy.taobao.api.entity.User;
import com.hyy.taobao.service.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/login")
public class UserLoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置客户端发送到服务端 的请求的内容类型
req.setCharacterEncoding("UTF-8");
// 设置服务端发送到客户端 的响应的内容类型
resp.setContentType("text/html;utf-8");
String userName = req.getParameter("userName");
String userPwd = req.getParameter("userPwd");
User user = new User(userName, userPwd);
IUserService iUserService = new UserServiceImpl();
User user1 = iUserService.userLogin(user);
if (user1!=null){
HttpSession session = req.getSession();
session.setAttribute("myUser",user1);
// Cookie cookie = new Cookie("cookie",session);
req.getRequestDispatcher("taobaoIndex.jsp").forward(req,resp);
}else {
req.setAttribute("msg","登录失败,用户名或密码错误!");
req.getRequestDispatcher("Login.jsp").forward(req,resp);
}
}
}
MyCartDeleteGoodsServlet .java
package com.hyy.taobao.controller;
import com.hyy.taobao.api.IMyCartService;
import com.hyy.taobao.api.entity.MyCart;
import com.hyy.taobao.api.entity.User;
import com.hyy.taobao.service.MyCartServiceImpl;
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 java.io.IOException;
import java.util.Set;
@WebServlet("/deleteGoods")
public class MyCartDeleteGoodsServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;utf-8");
HttpSession session = req.getSession();
User myUser = (User) session.getAttribute("myUser");
String userName = myUser.getUserName();
String goodsName = req.getParameter("goodsName");
MyCart myCart = new MyCart(userName, goodsName);
String judge = req.getParameter("judgement");
int judgement = Integer.parseInt(judge);
IMyCartService iMyCartService = new MyCartServiceImpl();
switch (judgement) {
case -1:
boolean sb1 = iMyCartService.myCartDeleteGoods(myCart, judgement);
if (sb1) {
MyCart myCart1 = new MyCart(userName);
IMyCartService iMyCartService1 = new MyCartServiceImpl();
Set<MyCart> myCartSet = iMyCartService1.myCartSelectGoods(myCart1);
req.setAttribute("myCartSet", myCartSet);
req.getRequestDispatcher("myCart.jsp").forward(req, resp);
} else {
req.setAttribute("msg", "操作失败!");
req.getRequestDispatcher("goodsResult.jsp").forward(req, resp);
}
break;
case 0:
boolean sb2 = iMyCartService.myCartDeleteGoods(myCart, judgement);
if (sb2) {
MyCart myCart1 = new MyCart(userName);
IMyCartService iMyCartService1 = new MyCartServiceImpl();
Set<MyCart> myCartSet = iMyCartService1.myCartSelectGoods(myCart1);
req.setAttribute("myCartSet", myCartSet);
req.getRequestDispatcher("myCart.jsp").forward(req, resp);
} else {
req.setAttribute("msg", "操作失败!");
req.getRequestDispatcher("goodsResult.jsp").forward(req, resp);
}
break;
case 1:
boolean sb3 = iMyCartService.myCartDeleteGoods(myCart, judgement);
if (sb3) {
MyCart myCart1 = new MyCart(userName);
IMyCartService iMyCartService1 = new MyCartServiceImpl();
Set<MyCart> myCartSet = iMyCartService1.myCartSelectGoods(myCart1);
req.setAttribute("myCartSet", myCartSet);
req.getRequestDispatcher("myCart.jsp").forward(req, resp);
} else {
req.setAttribute("msg", "操作失败!");
req.getRequestDispatcher("goodsResult.jsp").forward(req, resp);
}
break;
case 10:
MyCart myCart0 = new MyCart(userName);
boolean sb4 = iMyCartService.myCartDeleteGoods(myCart0, judgement);
if (sb4) {
MyCart myCart1 = new MyCart(userName);
IMyCartService iMyCartService1 = new MyCartServiceImpl();
Set<MyCart> myCartSet = iMyCartService1.myCartSelectGoods(myCart1);
req.setAttribute("myCartSet", myCartSet);
req.getRequestDispatcher("myCart.jsp").forward(req, resp);
} else {
req.setAttribute("msg", "清空失败!");
req.getRequestDispatcher("goodsResult.jsp").forward(req, resp);
}
break;
default:
System.out.println("sb");
}
}
}
前端页面
购物车.jsp
<%@ page import="java.util.Set" %>
<%@ page import="com.hyy.taobao.api.entity.MyCart" %>
<%@ page import="com.hyy.taobao.api.entity.User" %>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2021/4/14
Time: 9:26
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>购物车</title>
<style>
.right {
display: inline-block;
}
table {
display: inline-block;
}
</style>
</head>
<body>
<h3>${msg}</h3>
<hr>
<table border="1">
<tr>
<th>商品名称</th>
<th>商品单价</th>
<th>商品数量</th>
</tr>
<c:if test="${myCartSet!=null}">
<c:forEach items="${myCartSet}" var="myCart">
<c:if test="${myCart != null}">
<tr>
<td>${myCart.goodsName}</td>
<td>${myCart.goodsPrice}</td>
<td>${myCart.goodsNumber}</td>
<td>
<form action="/deleteGoods" class="right">
<input type="hidden" name="goodsName" value="${myCart.goodsName}">
<input type="hidden" name="judgement" value="-1">
<button type="submit">-</button>
</form>
</td>
<td>
<form action="/deleteGoods" class="right">
<input type="hidden" name="goodsName" value="${myCart.goodsName}">
<input type="hidden" name="judgement" value="0">
<button type="submit">删除该商品</button>
</form>
</td>
<td>
<form action="/deleteGoods" class="right">
<input type="hidden" name="goodsName" value="${myCart.goodsName}">
<input type="hidden" name="judgement" value="1">
<button type="submit">+</button>
</form>
</td>
</tr>
</c:if>
<c:if test="${myCart == null}">
<h3>空</h3>
</c:if>
</c:forEach>
<c:if test="${myCartSet == null}">
<h3>空</h3>
</c:if>
</c:if>
</table>
<h3>商品总价:
<c:set scope="request" var="sum" value="0"/>
<c:if test="${myCartSet!=null}">
<c:forEach items="${myCartSet}" var="myCart">
<c:if test="${myCart!=null}">
<c:set scope="request" var="goods" value="${myCart.goodsNumber*myCart.goodsPrice}"></c:set>
<c:set scope="request" var="sum" value="${requestScope.sum+requestScope.goods}"></c:set>
</c:if>
</c:forEach>
${requestScope.sum}元
</c:if>
<c:if test="${myCartSet==null}">
0元
</c:if>
</h3>
<form action="/deleteGoods" class="right">
<input type="hidden" name="judgement" value="10">
<button type="submit">清空购物车</button>
</form>
<form action="taobaoIndex.jsp" method="post">
<button>返回首页</button>
</form>
</body>
</html>