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> 密 码:<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>