2021-06-22

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

基于javaweb的购物车系统

前言

开发环境:idea、mysql数据库、tomcat
主要分为四个java包分别是:entity、filter、Servlet、util。 另外把MySQL建表语句在:database.sql文件

一、建立包和文件

一、java类 1.首先:entity里面建立四个类:Cart、Order、Product、User 2.filter里面建立:EncodingFilter的java类 3.Servlet里面建立:CartServlet、LoginServlet、LogoutServlet、OrderServlet、ProductServlet、UserServlet 4.util里面建立:JDBCUtil、MD5Util 至此把与java相关的文件已经建好了 二、web 1.建立jsp文件包:建立所有关于html页面的jsp文件(即后缀名为jsp)

二、所有代码

1.粘贴到相关的文件里

Cart代码如下(示例):

package entity;
import java.io.Serializable;
public class Cart implements Serializable {
    private int order;
    private int id;
    private String name;
    private int num;
    private double price;
    public Cart() {
        super();
    }
    public int getOrder() {
        return order;
    }
    public void setOrder(int order) {
        this.order = order;
    }
    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 int getNum() {
        return num;
    }
        public void setNum(int num) {
        this.num = num;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
}

Order代码如下(示例):

package entity;

public class Order {
    private int  id;
    private  int count;

    public int getId() {
        return id;
    }

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

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

Product代码如下(示例):


package entity;

import java.io.Serializable;

public class Product implements Serializable {//序列化
    private Integer id;
    private String name;
    private String price;

    public Product() {
        super();
    }


    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPrice() {
        return price;
    }

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


User代码如下(示例):

package entity;

public class User {
    public User(String username, String phone, String address) {
        super();
        this.username = username;
        this.phone = phone;
        this.address = address;
    }

    public User() {
    }

    private String id;
    private String username;
    private String password;
    private String phone;
    private String address;

    public String getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}


EncodingFilter代码如下(示例):

package filter;

import javax.servlet.*;
import java.io.IOException;

public class EncodingFilter implements Filter {
    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
      this.filterConfig=filterConfig;
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        String encoding=filterConfig.getInitParameter("encoding");
        servletRequest.setCharacterEncoding(encoding);
        servletResponse.setContentType("text/html;charset="+encoding);
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }


}

CartServlet代码如下(示例):

package Servlet;

import entity.Cart;
import entity.User;
import util.JDBCUtil;

import javax.servlet.ServletException;
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.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class CartServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       String path=req.getServletPath();
        System.out.println(path);

        if("/untitled1/add.Cart".equals(path)){
            add(req,resp);
            System.out.println("添加成功");
        }
        if("/untitled1/show.Cart".equals(path))
        {
            show(req,resp);
        }
        if("/modify.Cart".equals(path))
        {
            modify(req,resp);
            System.out.println("修改成功");
        }
        if("/untitled1/clear.Cart".equals(path))
        {
            clear(req,resp);
            System.out.println("清除成功");
        }
        if("/untitled1/delete.Cart".equals(path))
        {
            delete(req,resp);
            System.out.println("删除成功");
        }
        if("/untitled1/deletesome.Cart".equals(path))
        {
            remove(req,resp);
            System.out.println("删除成功");
        }


        return;

    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("正在删除");
    }

    private void remove(HttpServletRequest req, HttpServletResponse resp) throws  ServletException,IOException{

        HttpSession session=req.getSession();
        User  u=(User) session.getAttribute("User");
        String ids=req.getParameter("id");
        String ids1=ids.substring(0, ids.length()-1);
        String[] s=ids1.split(",");
        for (int i = 0; i < s.length; i++) {

            int id=Integer.parseInt(s[i]);
            String sql="delete from t_cart where c_ID=? and userid=?";
            Object[] obj={id,u.getId()};
            JDBCUtil.executeUpdata(sql,obj);
            System.out.println(s[i]);
        }
        resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
    }

    private void delete(HttpServletRequest req, HttpServletResponse resp) throws  ServletException,IOException{
        System.out.println("正在删除");
        String name=req.getParameter("name");
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        name = new String(name.getBytes("ISO8859-1"),"UTF-8");
        System.out.println(name);
        String sql="delete from t_cart where productid=(select id from t_protect where name=? ) and userid=?";
        Object[] obj={name,u.getId()};
       JDBCUtil.executeUpdata(sql,obj);
        resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");

    }

    private void clear(HttpServletRequest req, HttpServletResponse resp)throws  ServletException,IOException {

        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        String sql="delete from t_cart where userid=?";
        Object[] obj={u.getId()};
        JDBCUtil.executeUpdata(sql,obj);

        resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
    }

    private void modify(HttpServletRequest req, HttpServletResponse resp) throws  ServletException,IOException{
        HttpSession session=req.getSession();
        System.out.println("正在修改");
        User u=(User)session.getAttribute("User");
        Integer num=Integer.parseInt(req.getParameter("num"));
        if (num >= 1) {
            System.out.println(num);
            String name=req.getParameter("productname");
            name = new String(name.getBytes("ISO8859-1"),"UTF-8");
            System.out.println(name);
            String sql3="update t_cart set c_num=? ,c_price=?*(select price from t_protect where name=?)"+"where productid=(select id from t_protect where name=? ) and userid=?";
            Object[] obj={num,num,name,name,u.getId()};
            JDBCUtil.executeUpdata(sql3,obj);
            //resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");
        }
        resp.sendRedirect(req.getContextPath()+"/untitled1/show.Cart");


    }

    private void show(HttpServletRequest req, HttpServletResponse resp)throws  ServletException,IOException {
        ResultSet rs=null;
        List<Cart> lists=new ArrayList<Cart>();
       JDBCUtil.setConnection();
        String sql="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        Object[] obj={u.getId()};
        rs=JDBCUtil.executeQuery(sql,obj);
        int order=1;
        try {
            while(rs.next())
            {
                String name=rs.getString("name");
                int num=rs.getInt("c_num");
                double price=rs.getDouble("c_price");
                int id=rs.getInt("c_ID");
                Cart c=new Cart();
                c.setId(id);
                c.setOrder(order);
                c.setName(name);
                c.setNum(num);
                c.setPrice(price);
                lists.add(c);
                order++;

            }
            req.setAttribute("Carts", lists);
            req.getRequestDispatcher("/jsp/cartlist.jsp").forward(req, resp);
        } catch (SQLException e) {

            e.printStackTrace();
        }

    }

    private void add(HttpServletRequest req, HttpServletResponse resp) throws  ServletException,IOException{
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        Integer productId=Integer.parseInt(req.getParameter("productid"));
        String sql1="select * from t_cart where productid=? and userid=?";
        String sql2="insert into t_cart (productid,c_num,c_price,userid) values(?,?,(select price from t_protect where id=?),?)";
        Object[] obj={productId,u.getId()};
        ResultSet rs=null;
        rs=JDBCUtil.executeQuery(sql1,obj);
        try {
            if(rs.next())
            {
                String sql3="update t_cart set c_num=c_num+1 ,c_price=c_price+(select price from t_protect where id=?)"+"where productid=? and userid=?";
                Object[] obj2={productId,productId,u.getId()};
               JDBCUtil.executeUpdata(sql3,obj2);

            }
            else
            {
                Object[] obj1={productId,1,productId,u.getId()};
                JDBCUtil.executeUpdata(sql2,obj1);

            }
        } catch (SQLException e) {

            e.printStackTrace();
        }    resp.sendRedirect(req.getContextPath()+"/untitled1/list.Product");

    }
}

LogingSerclet代码如下(示例):

package Servlet;

import entity.User;
import util.JDBCUtil;
import util.MD5Util;

import javax.servlet.ServletException;
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.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LoginSevlet extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ResultSet rs=null;
       String id=req.getParameter("id");
        String pass=req.getParameter("password");
        String password= MD5Util.getMD5Str(pass);
        String sql="select * from t_user where u_id=? and u_password=?";
        Object[] obj={id,password};
        rs= JDBCUtil.executeQuery(sql,obj);
        PrintWriter out=resp.getWriter();
        try {
            if (rs.next())
            {
                HttpSession session=req.getSession();
                User u=new User();
                u.setId(id);
                u.setUsername(rs.getString("u_name"));
                u.setAddress(rs.getString("u_add"));
                u.setPhone(rs.getString("u_phone"));
                System.out.println(u.getUsername());
                session.setAttribute("User",u);
                System.out.println("2");
                resp.sendRedirect(req.getContextPath()+"untitled1/list.Product");
            }
            else {
                out.print("<h1 style='color:red;'>账户名或者密码错误</h1>" );
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }
}

vLogoutServlet代码如下(示例):

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class LogoutServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session=req.getSession();
        session.removeAttribute("User");
        resp.sendRedirect(req.getContextPath()+"untitled1/list.Product");
    }
}

vOrderServlet代码如下(示例):

package Servlet;

import util.JDBCUtil;
import entity.Cart;
import entity.User;
import entity.Order;

import javax.servlet.ServletException;
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.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class OrderServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String path=req.getServletPath();
        System.out.println(path);
        if("/untitled1/confirm.Order".equals(path)){
            confirm(req,resp);
            System.out.println("确定订单");

        }
        if("/untitled1/generat.Order".equals(path)){
            generate(req,resp);
            System.out.println("生成订单");
            //return;
        }
        if("/untitled1/history.Order".equals(path))
        {
            history(req,resp);
        }
        if("/untitled1/Detail.Order".equals(path))
        {
            Detail(req,resp);
        }
    }


    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    private void Detail(HttpServletRequest req, HttpServletResponse resp) {
        List<Cart> lists=new ArrayList<Cart>();
        ResultSet rs=null;
        Integer orderid=Integer.parseInt(req.getParameter("id"));
        String sql="select * from o_detail where orderid=?";
        Object[] obj={orderid};
        rs= JDBCUtil.executeQuery(sql,obj);
        try {
            int order=1;
            while(rs.next())
            {
                String name=rs.getString("s_name");
                int num=rs.getInt("o_num");
                double price=rs.getDouble("o_price");
                Cart c=new Cart();
                c.setOrder(order);
                c.setName(name);
                c.setNum(num);
                c.setPrice(price);
                lists.add(c);
                order++;
            }
            req.setAttribute("id", orderid);
            req.setAttribute("Carts", lists);
            req.getRequestDispatcher("/jsp/orderDetail.jsp").forward(req, resp);

        } catch (SQLException | ServletException | IOException e) {

            e.printStackTrace();
        }

    }

    private void history(HttpServletRequest req, HttpServletResponse resp) {
        ResultSet rs=null;
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        List<Order> lists=new ArrayList<Order>();
        String sql1="select * from t_order where ow_id=?";
        Object[] obj={u.getId()};
        rs=JDBCUtil.executeQuery(sql1,obj);
        try {
            int count=1;
            while(rs.next())
            {
                int id=rs.getInt("o_id");
                System.out.println(id);
                Order o=new Order();
                o.setId(id);
                o.setCount(count);
                count++;
                lists.add(o);
            }
            req.setAttribute("Orders", lists);
            req.getRequestDispatcher("/jsp/myorder.jsp").forward(req,resp);
        } catch (SQLException e) {

            e.printStackTrace();
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    private void generate(HttpServletRequest req, HttpServletResponse resp) {
        ResultSet rs=null;
       JDBCUtil.setConnection();
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        String sql1="INSERT INTO t_order(ow_id,ow_add,ow_phone) values (?,?,?)";
        String sql2="insert into  o_detail(orderid,s_name,o_num,o_price) values(?,?,?,?)";
        Object[] obj={u.getId(),u.getAddress(),u.getPhone()};
        int id=0;
        try {
            JDBCUtil.PSTMT= JDBCUtil.CONNECT.prepareStatement(sql1, PreparedStatement.RETURN_GENERATED_KEYS);
            for(int i = 0 ;i<obj.length;i++) {
                JDBCUtil.PSTMT.setObject(i+1, obj[i]);
            }
            JDBCUtil.PSTMT.executeUpdate();
            rs=JDBCUtil.PSTMT.getGeneratedKeys();
            while(rs.next())
            {
                id=rs.getInt(1);
            }
            String sql3="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
            Object[] obj1={u.getId()};
            rs=JDBCUtil.executeQuery(sql3, obj1);
            while(rs.next())
            {
                String name=rs.getString("name");
                int num=rs.getInt("c_num");
                double price=rs.getDouble("c_price");
                Object[] obj2={id,name,num,price};
                JDBCUtil.executeUpdata(sql2,obj2);
            }
            String sql4="delete from t_cart where userid=?";
            JDBCUtil.executeUpdata(sql4,obj1);
            req.setAttribute("id", id);
            req.getRequestDispatcher("/jsp/success.jsp").forward(req, resp);



        } catch (SQLException | ServletException | IOException e) {

            e.printStackTrace();
        }

    }

    private void confirm(HttpServletRequest req, HttpServletResponse resp) {

        ResultSet rs=null;
        List<Cart> lists=new ArrayList<Cart>();
        HttpSession session=req.getSession();
        User u=(User)session.getAttribute("User");
        String sql="select * from t_cart left join t_protect on t_cart.productid=t_protect.id where userid=?";
        Object[] obj={u.getId()};
        rs=JDBCUtil.executeQuery(sql, obj);
        int order=1;
        try {
            while(rs.next())
            {
                String name=rs.getString("name");
                int num=rs.getInt("c_num");
                double price=rs.getDouble("c_price");
                int id=rs.getInt("c_ID");
                Cart c=new Cart();
                c.setId(id);
                c.setOrder(order);
                c.setName(name);
                c.setNum(num);
                c.setPrice(price);
                lists.add(c);
                order++;
            }
            req.setAttribute("Carts", lists);
            req.getRequestDispatcher("/jsp/order.jsp").forward(req, resp);
        } catch (SQLException | ServletException | IOException e) {

            e.printStackTrace();
        }
    }
}

ProductServlet代码如下(示例):

package Servlet;

import entity.Product;
import util.JDBCUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProductServlet  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      String path=req.getServletPath();
        System.out.println(path);
      if ("/untitled1/list.Product".equals(path)){
          list(req,resp);

      }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
    //查询商品信息
    protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//传送信息到list.jsp
        // Connection con=null;
        //   PreparedStatement ps=null;
        ResultSet rs = null;
        List<Product> products = new ArrayList<Product> ();
        JDBCUtil.setConnection();

        String sql = "select *from t_protect";

        try {
            JDBCUtil.PSTMT=JDBCUtil.CONNECT.prepareStatement(sql);
            rs=JDBCUtil.PSTMT.executeQuery();
            while (rs.next()){
                int id=rs.getInt("id");
                String name=rs.getString("name");
                String price=rs.getString("price");
                System.out.println(id+" "+name+" "+price);
                Product s=new Product();
                s.setId(id);
                s.setName(name);
                s.setPrice(price);
                products.add(s);

            }
            req.setAttribute("product",products);
            req.getRequestDispatcher("/jsp/list.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }


}


UserServlet代码如下(示例):

package Servlet;

import util.JDBCUtil;
import util.MD5Util;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String u_id=req.getParameter("id");
        String u_name=req.getParameter("name");
        String pass=req.getParameter("password");
        String u_pass= MD5Util.getMD5Str(pass);
        String u_phone=req.getParameter("phone");
        String u_add=req.getParameter("address");
        String sql="insert into t_user(u_id,u_name,u_password,u_phone,u_add)values(?,?,?,?,?)";
        Object[] obj={u_id,u_name,u_pass,u_phone,u_add};
        JDBCUtil.executeUpdata(sql,obj);
        System.out.println(req.getContextPath());
        System.out.println("恭喜你注册成功");

        resp.sendRedirect(req.getContextPath()+"/jsp/login.jsp");

    }
}

JDBCUtil代码如下(示例):

package util;

import com.mysql.jdbc.Connection;


import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class JDBCUtil {
    private static String DB_URL="jdbc:mysql://localhost:3306/ShopCart";
    private static String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver" ;
    private static String USER_NAME = "root";
    private static String PWD = "123123";
    public static Connection CONNECT=null;
    public static PreparedStatement PSTMT=null;

    static {
        try {
            Class.forName(DRIVER_CLASS_NAME);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public  static void setConnection(){
        try {
            CONNECT= (Connection) DriverManager.getConnection(DB_URL,USER_NAME,PWD);
            System.out.println("连接成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    //更新数据库
    public static int executeUpdata(String sql,Object[] params){
        int result=-1;
        setConnection();
        try {
            PSTMT=CONNECT.clientPrepareStatement(sql);
            if (params!=null&&params.length>0){
                for (int i=0;i<params.length;i++){
                    PSTMT.setObject(i+1,params[i]);
                }
            }
            result=PSTMT.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeResource(null);
        }
        return result;
    }

    //查询方法的封装
    public static ResultSet executeQuery(String sql,Object[] params){
        ResultSet rs=null;
        setConnection();
        try {
            PSTMT=CONNECT.clientPrepareStatement(sql);
            if (params!=null&&params.length>0){
                for (int i=0;i<params.length;i++){
                    PSTMT.setObject(i+1,params[i]);
                }
            }
            rs=PSTMT.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }

    private static void closeResource(ResultSet rs) {

        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (PSTMT!=null){
            try {
                PSTMT.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (CONNECT!=null){
            try {
                CONNECT.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }



    public static void main(String[] args) {
        JDBCUtil.setConnection();
    }
}

MD5Util代码如下(示例):

package util;

import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    public static String getMD5Str(String str){
        byte[] digest=null;
        try {
            MessageDigest md5=MessageDigest.getInstance("md5");
            digest=md5.digest(str.getBytes("utf-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String md5Str=new BigInteger(1,digest).toString(16);
        return md5Str;
    }

}

database.sql代码如下(示例):

create database ShopCart charset=utf8;

use ShopCart;

show tables ;

create table t_protect(
    id int primary key auto_increment,
    name varchar(20),
    price double
);
 set names gbk;
insert into t_protect(name,price)values ('牛奶',3);
insert into t_protect(name, price) values ('面包',5);
insert into t_protect(name, price) VALUES ('花生',4);

create table t_user(
                       u_id varchar(20) primary key,
                       u_name varchar(10),
                       u_password varchar(50),
                       u_phone varchar(11),
                       u_add varchar(50)
);
create table t_order(
                        o_id int  primary key auto_increment,
                        ow_id varchar(20),
                        ow_add varchar(50),
                        ow_phone varchar(11)
);

create table t_cart(
                       c_ID int primary key auto_increment,
                       productid int,
                       c_num int,
                       c_price double,
                       userid varchar(20),
                       constraint fk_cart_product foreign key (productid) references t_protect(id),
                       constraint fk_cart_user foreign key (userid) references t_user(u_id)
);
create table o_detail(
                         o_id int primary key auto_increment,
                         orderid int,
                         s_name varchar(10),
                         o_num int,
                         o_price int,
                         constraint fk_order_id foreign key (orderid) references t_order(o_id)
);


2.web里面jsp包里面的代码

cartlist.jsp(示例):

<%@ page import="entity.Cart" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/17
  Time: 19:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>我的购物车</title>
</head>
<body>
<h1>我的购物车</h1> <br><hr>

<table border="1">
    <tr><th><input type="checkbox">全选</th><th>序号</th><th>商品</th><th>数量</th><th>价格</th><th>操作</th></tr>
        <%
    			List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
    			int count=1;
    			for(Cart c:lists){
    		 %>
    <tr>
        <td><input type="checkbox" id="<%=c.getId()%>" onclick="chose(<%=c.getId()%>)"></td>
        <td><%=c.getOrder() %></td>
        <td><%=c.getName() %></td>
        <td>
            <input type="text" size="1px" onchange="change('<%=c.getName() %>',this.value )" value="<%=c.getNum()%>">
        </td>
        <td><%=c.getPrice() %></td>
        <td><a href="#" id="<%=c.getName() %>">修改</a>
      <a href="<%=request.getContextPath() %>/untitled1/delete.Cart?name=<%=c.getName() %>">删除</a>
        </td>
    </tr>

        <%
				count++;
				}
			%>
</table>
<script type="text/javascript">
    function change(name,num){
        //alert("函数执行");
        // alert(name);
        // alert(num);
        var a=document.getElementById(name);
        a.href="<%=request.getContextPath() %>/modify.Cart?num="+ num +"&productname="+name ;
    }
    function chose(id)
    {
        var a=document.getElementById("deletc");
        var x=a.href;
        a.href=x+id+",";
    }
</script>
<br>
<hr>
<a href="<%=request.getContextPath() %>/untitled1/deletesome.Cart?id=" id="deletc">删除选中项</a><br>
<a href="<%=request.getContextPath() %>/untitled1/clear.Cart">清空购物车</a><br>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">继续购物</a><br>
<a href="<%=request.getContextPath() %>/untitled1/confirm.Order">结算</a><br>

</body>
</html>

list.jsp(示例):

<%@ page import="java.util.*" %>
<%@ page import="entity.Product" %>
<%@ page import="entity.User" %><%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/4
  Time: 9:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" import="java.util.*" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>商品列表</title>
</head>
<body>
<h1>商品列表</h1> <br>
<%
    HttpSession Session=request.getSession();
    User u=(User) Session.getAttribute("User");
%>
<%
    if(u==null)
    {
%>
<a href="<%=request.getContextPath() %>/jsp/regist.jsp">注册</a>
<a href="<%=request.getContextPath()%>/jsp/login.jsp">登录</a>
<% } else {%>
<%=u.getUsername()%>用户在线
<a href="<%=request.getContextPath() %>/Logout">注销</a>
<a href="<%=request.getContextPath() %>/untitled1/history.Order">我的历史订单</a>
<%} %>
<hr>
<br>
<table border="1">
    <tr><th>序号</th><th>名称</th><th>价格</th><th>操作</th></tr>
    <%
        List<Product>products=(List<Product>) request.getAttribute("product");
        int count=1;
        for (Product p:products){
    %>
    <tr>
        <td><%=p.getId()%></td>
        <td>
            <a href="#"><%=p.getName()%></a>
        </td>
        <td><%=p.getPrice()%></td>
        <td>
            <a href="<%=request.getContextPath() %>/untitled1/add.Cart?productid=<%=p.getId() %>" onclick="return check();">加入购物车</a>
        </td>
    </tr>
    <%
        }
    %>


</table>
<script type="text/javascript">
   function check(){
       if (u!=null)
       {
           return confirm('确认加入购物车?');
       }
       else
       {
           alert("请先登录");
           return false;
       }
   }
</script>
<br>
<a href="<%=request.getContextPath() %>/untitled1/show.Cart">查看购物车</a>
</body>
</html>

login.jsp(示例):

<%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/15
  Time: 10:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>用户登录</h1>
<hr>
<form action="<%=request.getContextPath()%>/Login"  method="post">
    账号:<input type="text" name="id"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">返回</a>
</body>
</html>

myorder(示例):

<%@ page import="entity.Order" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/17
  Time: 18:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>历史订单</title>
</head>
<body>
<h1>历史订单</h1>
<table border="1">
    <tr>
        <th>序号</th>
        <th>订单号</th>
    </tr>
    <%
        List<Order> lists=(List<Order>)request.getAttribute("Orders");
        for(Order o:lists){
    %>
    <tr>
        <td><%=o.getCount()%></td>
        <td><a href="<%=request.getContextPath() %>/untitled1/Detail.Order?id=<%=o.getId() %>"><%=o.getId() %></a></td>
    </tr>
    <%
        }
    %>


</table>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">返回</a>
</body>
</html>

order(示例):

<%@ page import="entity.User" %>
<%@ page import="entity.Cart" %>
<%@ page import="java.util.List" %>
<%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/17
  Time: 18:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>确认订单</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>
<body>

<%
    HttpSession Session=request.getSession();
    User u=(User) Session.getAttribute("User");

%>
<h1>确认订单</h1>
<hr>
用户名:<%=u.getUsername()%><br>
电话:<%=u.getPhone() %><br>
地址:<%=u.getAddress()%><br>
<table border="1">
    <tr>
        <th>序号</th>
        <th>商品</th>
        <th>数量</th>
        <th>价格</th>
    </tr>
        <%
    			List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
    			int count=1;
    			double sum=0;
    			for(Cart c:lists){
    			double x=c.getPrice();
    			sum=sum+x;
    		 %>
    <tr>
        <td><%=c.getOrder() %></td>
        <td><%=c.getName() %></td>
        <td><%=c.getNum() %></td>
        <td><%=c.getPrice() %> </td>
    </tr>
        <%
				count++;

				}
			%>
</table>
<hr>
总计:<%=sum %><br>
<a href="<%=request.getContextPath() %>/untitled1/generat.Order">生成订单</a>
<a href="/untitled1/list.Product">返回</a>
</body>
</html>

orderDetail(示例):

<%@ page import="entity.Order" %>
<%@ page import="java.util.List" %>
<%@ page import="entity.User" %>
<%@ page import="entity.Cart" %><%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/17
  Time: 19:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>订单详情</title>
</head>
<body>
<h1>订单详情</h1>
<hr>
<%
    HttpSession Session=request.getSession();
    User u=(User)Session.getAttribute("User");
    int id=Integer.parseInt(String.valueOf(request.getAttribute("id")));
%>
<%=u.getUsername() %>用户,<%=id %>订单<br>
<table border="1">
    <tr>
        <th>序号</th>
        <th>商品</th>
        <th>数量</th>
        <th>价格</th>
    </tr>
    <%
        List<Cart> lists=(List<Cart>)request.getAttribute("Carts");
        int count=1;
        double sum=0;
        for(Cart c:lists){
            double x=c.getPrice();
            sum=sum+x;
    %>
    <tr>
        <td><%=c.getOrder()%></td>
        <td><%=c.getName()%></td>
        <td><%=c.getNum()%></td>
        <td><%=c.getPrice()%></td>
    </tr>
    <%
            count++;
        }
    %>
</table>
<hr><%=count%>条,总计:<%=sum%><br>
<a href="<%=request.getContextPath() %>/untitled1/history.Order">返回</a>
</body>
</html>

regist(示例):

<%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/15
  Time: 11:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户注册</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<script type="text/javascript">
    function checkUsername(){
        var u=document.getElementById("username");
        var msg=document.getElementById("unMsg");
        if (u.value==""){
            msg.style.color="red";
            msg.innerHTML="用户名不能为空";
            return;
        }

        var xhr=new XMLHttpRequest();
        xhr.open("get","<%=request.getContextPath()%>/checkUsername.uesr?username="+u.value);
        xhr.onreadystatechange=function (){
            if (xhr.readyState==4 && xhr.status==200){
                if ("用户名可用"==xhr.responseText){
                    msg.style.color="green";
                }else{
                    msg.style.color="red";
                }
                msg.innerHTML=xhr.responseText;
            }

        };
    }
    function cl(){
        var msg=document.getElementById("unMsg");
        msg.innerHTML="";
    }
    function fn(){
        var xhr=new XMLHttpRequest();
        xhr.open("post","<%=request.getContextPath()%>/fn.user");
        xhr.onreadystatechange=function (){
            if (xhr.readyState==4 && xhr.status==200){
                var str=xhr.responseText;
                console.log(typeof (str));
                console.log(str);
                var user=eval("("+str+")");
                console.log(user.username);
                console.log(user.address);
            }
        };
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.send();
    }

</script>

<body>
<h1>用户注册</h1>
<hr>
<form action="<%=request.getContextPath()%>/regist.User" method="post">
    账号:<input type="text" name="id"><br>
    用户名:<input id="username" type="text" name="name" onblur="checkUsername();" onfocus="cl();"><br>
    <span id="unMsg"></span>

    密码:<input type="password" name="password"><br>
    电话:<input type="text" name="phone"><br>
    地址:<input type="text" name="address"><br>
    <input type="submit" value="注册">
</form>
<%
    String msg=(String) request.getAttribute("msg");
    if(msg!=null){
        out.print("div style='color:red;'>"+msg+"</div>");
    }
%>
<a href="<%=request.getContextPath()%>/untitled1/list.Product">返回</a>

</body>
</html>

success(示例):

<%--
  Created by IntelliJ IDEA.
  User: meet
  Date: 2021/6/17
  Time: 19:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>成功</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>
<body>
<%
    int id=Integer.parseInt(String.valueOf(request.getAttribute("id")));
%>
<h1>订单</h1>
<hr>
<h1>订单生成成功,订单号<%=id %></h1>
<a href="<%=request.getContextPath() %>/untitled1/list.Product">继续购物</a>

</body>
</html>

WEB-INF下面的web.xml(自动生成的文件、但是要配路径)(示例):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name></display-name>
    <servlet>
        <servlet-name>ProductServlet</servlet-name>
        <servlet-class>Servlet.ProductServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>Servlet.UserServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>CartServlet</servlet-name>
        <servlet-class>Servlet.CartServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>LoginSevlet</servlet-name>
        <servlet-class>Servlet.LoginSevlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>LogoutServlet</servlet-name>
        <servlet-class>Servlet.LogoutServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>OrderServlet</servlet-name>
        <servlet-class>Servlet.OrderServlet</servlet-class>
    </servlet>


    <servlet-mapping>
        <servlet-name>ProductServlet</servlet-name>
        <url-pattern>*.Product</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>*.User</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>CartServlet</servlet-name>
        <url-pattern>*.Cart</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>LoginSevlet</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>LogoutServlet</servlet-name>
        <url-pattern>/Logout</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>OrderServlet</servlet-name>
        <url-pattern>*.Order</url-pattern>
    </servlet-mapping>
<!--    字符集过滤器-->
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>filter.EncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>

所有的源代码都在这里啦,sql语句现在数据库里面执行才能调用哦


总结

有问题可以在下面留言给我哦

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值