使用DAO模式、servlet显示商品(书籍)的信息,并将其添加到购物车

在这里插入图片描述

在这里插入图片描述

Product.java

package cn.dao.vo;

import java.io.Serializable;

public class Product implements Serializable {
		private int id; //编号
		private String name ;//商品名称
		private double price; //单价
		private String category; //种类
		private int pnum; //库存数量
		private String imgurl; //图片路径
		private String description; //详细描述
		
		public Product() {
			super();
		}

		public Product(int id, String name, double price, String category, int pnum, String imgurl,
				String description) {
			super();
			this.id = id;
			this.name = name;
			this.price = price;
			this.category = category;
			this.pnum = pnum;
			this.imgurl = imgurl;
			this.description = description;
		}

		public int getId() {
			return id;
		}

		public void setId(int id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public double getPrice() {
			return price;
		}

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

		public String getCategory() {
			return category;
		}

		public void setCategory(String category) {
			this.category = category;
		}

		public int getPnum() {
			return pnum;
		}

		public void setPunm(int pnum) {
			this.pnum = pnum;
		}

		public String getImgurl() {
			return imgurl;
		}

		public void setImgurl(String imgurl) {
			this.imgurl = imgurl;
		}

		public String getDescription() {
			return description;
		}

		public void setDescription(String description) {
			this.description = description;
		}
		
		
}

ProductDao.java

package cn.dao.dao;

import java.util.List;

import cn.dao.vo.Product;

public interface ProductDao {
		public boolean add(Product product);
		public List<Product> list();
		public boolean update (Product product);
		public Product findbyId(int id);
}

ProductDaoImplete.java

package cn.dao.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import cn.dao.vo.Product;
import cn.jdbc.tools.JDBCUtil;

public class ProductDaoImplete implements ProductDao {

	Connection conn;
	PreparedStatement pstmt;
	ResultSet rs = null;
	
	
	@Override
	public boolean add(Product product) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Product> list() {
		String sql = "select id,name,category,price,pnum from products";
		ArrayList<Product> list = new ArrayList<Product>();
		try {
			conn = JDBCUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while(rs.next()) {
				Product p = new Product();
				p.setId(rs.getInt("id"));
				p.setName(rs.getString("name"));
				p.setCategory(rs.getString("category"));
				p.setPrice(rs.getDouble("price"));
				p.setPunm(rs.getInt("pnum"));
				list.add(p);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public boolean update(Product product) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Product findbyId(int id) {
		String sql = "select * from products where id="+id;
		Product product = null;
		try {
			conn = JDBCUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				product = new Product(id,rs.getString("name"),rs.getDouble("price"),rs.getString("category"),rs.getInt("pnum"),rs.getString("imgurl"),rs.getString("description"));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return product;
	}

}

a1_denglu.jsp

	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>

<style>
		h3{
		text-align: center;
		}
		.user{
		color: #999;
		}
		form{
		text-align: center;
		}
		form .rem{
		margin-left: 30px;
		}
</style>

<body>

<%@ include file="a1_denglu_top.jsp"%><!-- 静态包含 -->
<%-- <jsp:include page="a1_denglu_top.jsp"></jsp:include> --%> <!-- 这是动态包含,运行时的包含 -->
	<h3>欢迎进入清华大学用户登陆页面</h3>
	
<form type="text" action="LoginServlet" method="post">

	<p> 用户名:<input type="text" name="username" value="请输入用户名" class="user"
	onfocus="if(this.value=='请输入用户名'){this.value='';this.style.color='#424242'} " 
    onblur="if(this.value==''){this.value='请输入用户名' ; this.style.color='#999'}"> 
    </p>
    
	<p>&nbsp;&nbsp;&nbsp;&nbsp;:<input type="password" name="password"> </p>
	
	<input type="submit" value="登陆" class="rem">
	<input type="reset"  value="重置" class="rem"> 
	
</form>

<%@ include file="a1_denglu_bottom.jsp"%>

</body>

<script type="text/javascript">
		 
</script>

</html>

在这里插入图片描述

LoginServlet.java

package cn.mvc.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 cn.dao.dao.UserDaoImplete;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1、获取表单输入的数据
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String name = request.getParameter("username");
		String pwd = request.getParameter("password");
		//2、调用实现类里的方法
		UserDaoImplete udi = new UserDaoImplete();
		int flag = udi.verify(name, pwd);
		PrintWriter out = response.getWriter();
		if(flag==1){
			//response.sendRedirect("a1_form_zhuce_.jsp");
			//out.print("<h1>登陆成功!2秒后自动跳转到商城主页面页面,如果没有跳转,请点击<a href='a1_denglu.jsp'>主页面</a></h1>");
			//response.setHeader("refresh", "2,URL=UserServlet?action=list");	
			response.sendRedirect("ProductServlet?action=list");
		}else if(flag==2){
			//response.sendRedirect("a1_denglu.jsp");
			out.print("<h1>密码错误!2秒后自动跳转到登陆页面,如果没有跳转,请点击<a href=\"a1_denglu.jsp\">再次尝试登陆</a></h1>");
			response.setHeader("refresh", "2,URL=a1_denglu.jsp");	
		}else{
			//response.sendRedirect("a1_denglu.jsp");
			out.print("<<h1>用户名不正确!2秒后自动跳转到登陆页面,如果没有跳转,请点击<a href=\"a1_denglu.jsp\">再次尝试登陆</a></h1>");
			response.setHeader("refresh", "2,URL=a1_denglu.jsp");	
		}
	}
	

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

}

ProductServlet.java

package cn.mvc.servlet;

import java.io.IOException;
import java.util.ArrayList;

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 cn.dao.dao.ProductDaoImplete;
import cn.dao.vo.Product;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			String action = request.getParameter("action");
			if(action.equals("list")) {
				list(request,response);
			}
			if(action.equals("view")) {
				view(request,response);
			}
	}
	

	protected void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ProductDaoImplete pdi = new ProductDaoImplete();
		ArrayList<Product> plist = (ArrayList<Product>)pdi.list();
		request.setAttribute("plist", plist);
		request.getRequestDispatcher("productList.jsp").forward(request, response);
	}
	
	protected void view(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		// TODO Auto-generated method stub
		int id = Integer.parseInt(request.getParameter("id"));
		ProductDaoImplete pdi = new ProductDaoImplete();
		Product product = pdi.findbyId(id);
		request.setAttribute("product", product);
		request.getRequestDispatcher("productDetail.jsp").forward(request, response);
	}

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

}

productList.jsp

<%@page import="java.util.*"%>
<%@page import="cn.dao.dao.UserDaoImplete"%>
<%@page import="cn.dao.vo.*"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<table width="800px" border="1px" align="center">
		<tr>
			<td>商品ID</td>
			<td>商品名</td>
			<td>类别</td>
			<td>单价</td>
			<td>库存数量</td>
			<td>查看商品详情</td>
		</tr>
		
		<%
			ArrayList<Product> list = (ArrayList<Product>)request.getAttribute("plist");
			for(Product p : list){
		%>

		<tr>
			<td><%=p.getId()%></td>
			<td><%=p.getName()%></td>
			<td><%=p.getCategory()%></td>
			<td><%=p.getPrice()%></td>
			<td><%=p.getPnum()%></td>
			<td><a href="ProductServlet?action=view&id=<%=p.getId() %>">查看商品详情</a></td>
		</tr>
	<%
	}
	%>

	</table>
	
</body>
</html>

在这里插入图片描述

productDetail.jsp

<%@page import="cn.dao.vo.Product"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
	Product p =(Product)request.getAttribute("product");
%>

	<div align="center">
		<h2>商品详细信息</h2>
		<form action="CartServlet?action=buy&id=<%=p.getId()%>" method="post">
		商品名称<input type="text" value="<%=p.getName()%>"><br>
		商品型号<input type="text" value="<%=p.getCategory()%>"><br>
		商品价格<input type="text" value="<%=p.getPrice()%>"><br>
		商品数量<input type="text" value="<%=p.getPnum()%>"><br>
		商品描述<textarea rows="10" cols="50"><%=p.getDescription() %></textarea>
		<input type="submit" value="添加到购物车"> 
		<input type="button" value="返回">
		</form>
	</div>

</body>
</html>

在这里插入图片描述

Cart.java

package cn.dao.vo;

import java.io.Serializable;

public class Cart implements Serializable {
		private int id; //商品的ID
		private String name; //商品名称
		private double price;
		private int pnum;  //商品库存数量
		private int num; //商品的购买数量
		
		public Cart() {
			super();
		}

		public Cart(int id, String name, double price, int pnum, int num) {
			super();
			this.id = id;
			this.name = name;
			this.price = price;
			this.pnum = pnum;
			this.num = num;
		}

		public int getId() {
			return id;
		}

		public void setId(int id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public double getPrice() {
			return price;
		}

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

		public int getPnum() {
			return pnum;
		}

		public void setPnum(int pnum) {
			this.pnum = pnum;
		}

		public int getNum() {
			return num;
		}

		public void setNum(int num) {
			this.num = num;
		}
		
		
}

CartServlet.java

package cn.mvc.servlet;

import java.io.IOException;
import java.util.ArrayList;

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 cn.dao.dao.ProductDaoImplete;
import cn.dao.vo.Cart;
import cn.dao.vo.Product;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String action=request.getParameter("action");
		if(action==null)
			action="";	
		if(action.equals("buy")){//购买商品
			buy(request, response);
		}else if(action.equals("remove")) {
			remove(request,response);
		}	
		else if(action.equals("append")) {
			append(request,response);
		}else if(action.equals("minus")) {
			minus(request,response);
		}else if(action.equals("clear")) {
			clear(request,response);
		}																
	}

	protected void buy(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int id =Integer.parseInt(request.getParameter("id")) ;		
		ProductDaoImplete pdi = new ProductDaoImplete();
		Product product = pdi.findbyId(id);
		Cart cart = new Cart();
		cart.setId(product.getId());
		cart.setName(product.getName());
		cart.setPrice(product.getPrice());
		cart.setPnum(product.getPnum());
		cart.setNum(1);
		HttpSession session = request.getSession();
		ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
		if(cartlist==null){
			cartlist = new ArrayList<Cart>();
		}
		boolean hasCart = false;
		for(Cart c : cartlist){
			if(c.getId()==cart.getId()){
			c.setNum(c.getNum()+cart.getNum());
			hasCart = true;
			break;
			}
		}
		if(!hasCart)
			cartlist.add(cart);
		session.setAttribute("cartlist", cartlist);
		response.sendRedirect("showCar.jsp");		
	}
	
	protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
		int id=(Integer.parseInt(request.getParameter("id")));		//获取商品名称
		for(int i = 0 ; i < cartlist.size() ; i++){
			Cart c = cartlist.get(i);
			if(c.getId()==id){
				cartlist.remove(i);
				break;
			}
		}
		response.sendRedirect("showCar.jsp");		
	}
	
	protected void append(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
		int id = Integer.parseInt(request.getParameter("id"));
		for(Cart c : cartlist){
			if(c.getId()==id){
			c.setNum(c.getNum()+1);
			break;
			}
		}
		response.sendRedirect("showCar.jsp");
	}
	
	protected void minus(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session= request.getSession();
		ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
		int id=Integer.parseInt(request.getParameter("id"));
		for(int i=0;i<cartlist.size();i++){
			Cart c=cartlist.get(i);
			if(c.getId()==id){
				if(c.getNum()>1){
					c.setNum(c.getNum()-1);
					break;
				}else if(c.getNum()==1){   //当商品数量为1的时候,点击减一,就是移除整个商品
					cartlist.remove(i);
				}
			}
		}
		response.sendRedirect("showCar.jsp");
	}
	
	protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
		cartlist.clear();
		response.sendRedirect("showCar.jsp");
	}
	
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

showCar.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.dao.vo.*" %>
<!-- 通过动作标识,获取ShopCar类实例 -->
<% 
    ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist"); 		//获取实例中用来存储购买的商品的集合
	double total=0;								//用来存储应付金额
%>

<table border="1" width="550" rules="none" cellspacing="0" cellpadding="0">
	<tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr>
	<tr align="center" height="30" bgcolor="lightgrey">
		<td width="25%">名称</td>
		<td>价格</td>
		<td>库存</td>
		<td>数量</td>
		<td>总价()</td>
		<td>移除</td>
	</tr>
	<%	if(cartlist==null||cartlist.size()==0){ %>
	<tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr>
	<% 
		}
		else{
			for(int i=0;i<cartlist.size();i++){
				Cart cart=(Cart)cartlist.get(i);
				String name=cart.getName();							//获取商品名称
				double price=cart.getPrice();						//获取商品价格
				int pnum = cart.getPnum();
				int num=cart.getNum();								//获取购买数量				
				double money=((int)((price*num+0.05)*10))/10.0;		//计算当前商品总价
				total+=(int)(money*10)/10.0;										//计算应付金额
	%>
	<tr align="center" height="50">
		<td><%=name%></td>
		<td><%=price%></td>
		<td><%=pnum%></td>
		<td>
		<a href="CartServlet?action=append&id=<%=cart.getId()%>"><input type="button"style="width:14px"value="+"/></a>
		<%=num%>
		<a href="CartServlet?action=minus&id=<%=cart.getId()%>"><input type="button"style="width:14px"value="-"/></a>
		
		</td>
		<td><%=money%></td>
		<td>
<a href="CartServlet?action=remove&id=<%=cart.getId() %>">移除</a>
</td>
	</tr>
	<%							
			}
		}
	%>
	<tr height="50" align="center"><td colspan="5">应付金额:<%=total%></td></tr>
	<tr height="50" align="center">
		<td colspan="2"><a href="ProductServlet?action=list">继续购物</a></td>
		<td colspan="2"><a href="CartServlet?action=clear">清空购物车</a></td>
		<td colspan="2"><a href="do_car.jsp?action=clear">添加订单</a></td>
	</tr>				
</table>

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值