1.jdbc连接写错了,我恨死自己了
Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/cart?characterEncoding=UTF-8","root","admin");
2.
解决方案:
思路:
因为订单项实体类中定义了id,但是在删除订单项的时候,获取的商品的id,再添加的时候,重复商品,只需要修改数量即可,但是加上一个id的话,业务就比较复杂了,所以根据商品的id来删除一个一个的订单项,就这么想。以product为中心的前后呼应。
3.
3.删除订单项的问题
4.
1.第一种情况原因是因为:获取session对象里面的ois,这个ois是共享的,一旦修改后,产生的影响是永久的
2.第二种情况也就是我界面上看到的那种,因为forEach循环,每遍历一个结果,才会删一个订单项,而break是跳出当前循环,所以界面又回到了订单项的页面,我才需要在一次点击删除,再删一个商品。
3.第三种情况就是,不加break,结果也是只能一个一个的删除,但是删到最后一个,会报错。
3的错误如下:
第三种情况的原因及解决方法网址:https://www.cnblogs.com/loong-hon/p/10256686.html
5.自动生成主键的相关代码
添加订单项的代码逻辑
package Servlet;
import DAO.ProductDAO;
import entity.OrderItem;
import entity.Product;
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 java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "OrderItemAddServlet",urlPatterns = {"/addOrderItem"})
public class OrderItemAddServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int num=Integer.parseInt(req.getParameter("num")); //1获取商品数量
int pid=Integer.parseInt(req.getParameter("id")); //2获取商品id
Product p=new ProductDAO().getProduct(pid); //3根据ID获取商品对象
// 4新建一个OrderItem对象
OrderItem oi=new OrderItem();
oi.setNum(num);
oi.setProduct(p);
// 从session中获取一个list 这个list是用来存放当前用户购买所生成的所有订单项的
List<OrderItem> ois=(List<OrderItem>)req.getSession().getAttribute("ois");
if(ois==null){
//第一次购买,这个订单项一定是没有的 需要在session中定义一个 方便后续使用
ois=new ArrayList<OrderItem>();
req.getSession().setAttribute("ois",ois);
}
// 对增加之前确认是否订单项表里是否有相同的商品
boolean found=false;
for(OrderItem orderItem:ois){
// 判断即将添加的订单项中商品和集合中已有的商品是否有相同的出现
// 如果出现相同的,则将两个订单项的购买数量进行合并
if(orderItem.getProduct().getId()==oi.getProduct().getId()){
orderItem.setNum(orderItem.getNum()+oi.getNum());
found=true;
break;
}
}
// 增加订单项表里没有相同的商品
if(!found){
ois.add(oi);
}
// 把新增的订单加入带这个list中
// ois.add(oi);
resp.sendRedirect("/listOrderItem");
}
}