基于JSP、java、Tomcat三者的项目实战--校园交易平台系统--(实习,答辩皆可用到)--万字爆更

技术支持:JAVA、JSP

服务器TOMCAT 7.0.86

编程软件:IntelliJ IDEA 2021.1.3 x64

全部文件展示

网页实现功能截图

主页

注册 

 登录

购物车主页

修改功能

修改成功

添加商品功能 

添加成功

添加进入购物车功能

支付功能

 支付过的历史清单账单


全部代码

dao->StudentDAO

package dao;

import entiy.Product;
import entiy.Student;
import entiy.Total;
import util.DBUtil;

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

public class StudentDAO {
    public List<Student> findAll() throws Exception {
        List<Student> students = new ArrayList<Student>();
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet rst = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement("select * from users");
            rst = prep.executeQuery();
            while (rst.next()) {
                int id = rst.getInt("id");
                String name = rst.getString("name");
                int idname = rst.getInt("idname");
                String pd = rst.getString("pd");
                Student e1 = new Student();
                e1.setName(name);
                e1.setIdname(idname);
                e1.setPd(pd);
                students.add(e1);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            DBUtil.close(conn);
        }

        return students;
    }
    public List<Product> findAllgoods() throws Exception {
        List<Product> products = new ArrayList<Product>();
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet rst = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement("select * from goods");
            rst = prep.executeQuery();
            while (rst.next()){
                int id = rst.getInt("id");
                String name = rst.getString("name");
                double price = rst.getDouble("price");
                Product e1 = new Product();
                e1.setId(id);
                e1.setName(name);
                e1.setPrice(price);
                products.add(e1);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw  e;
        }finally {
            DBUtil.close(conn);
        }

        return products;
    }
    public List<Total> findtotals() throws Exception {
        List<Total> totals = new ArrayList<Total>();
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet rst = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement("select * from Total");
            rst = prep.executeQuery();
            while (rst.next()){
                int id = rst.getInt("id");
                double total = rst.getDouble("total");
                Total e1 = new Total();
                System.out.println(e1);
                e1.setId(id);
                e1.setTotal(total);
                totals.add(e1);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw  e;
        }finally {
            DBUtil.close(conn);
        }

        return totals;
    }
    public void save(Student e) throws Exception {
        Connection conn = null;
        PreparedStatement prep = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement(
                    "INSERT INTO users (name, idname, pd) VALUES (?, ?, ?)");
            prep.setString(1, e.getName());
            prep.setInt(2, e.getIdname());
            prep.setString(3, e.getPd());
            prep.executeUpdate();
        } catch (Exception e1) {
            e1.printStackTrace();
            throw e1;
        } finally {
            // Close PreparedStatement and Connection
            if (prep != null) {
                try {
                    prep.close();
                } catch (SQLException e2) {
                    e2.printStackTrace();
                }
            }
            DBUtil.close(conn);
        }
    }
    public void savegoods(Product e) throws Exception {
    Connection conn = null;
    PreparedStatement prep = null;
    try {
        conn = DBUtil.getConnection();
        prep = conn.prepareStatement(
                "INSERT INTO goods (name,price) VALUES (?, ?)");
        prep.setString(1, e.getName());
        prep.setDouble(2, e.getPrice());
        prep.executeUpdate();
    } catch (SQLException e1) {
        // Handle specific SQL exceptions or log them for debugging
        e1.printStackTrace();
        throw new Exception("Failed to save goods: " + e1.getMessage(), e1);
    } finally {
        // Close PreparedStatement and Connection in finally block
        if (prep != null) {
            try {
                prep.close();
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
        }
        DBUtil.close(conn);
    }
}
    public void delete(int id) throws Exception {
        Connection conn =null;
        PreparedStatement prep = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement("delete from emp where id="+id+"");
            prep.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
            throw e;
        }finally {
            DBUtil.close(conn);
        }
    }
    //根据ID查询商品信息(修改商品信息第一步)
    public Product findById(int id) throws Exception{
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet rst = null;
        Product e =new Product();
        try {
            conn =DBUtil.getConnection();
            System.out.println(conn);
            prep = conn.prepareStatement(
                    "select * from goods where id="+id+"");
            System.out.println(id);
            rst = prep.executeQuery();
            if(rst.next()){
                int id1 = rst.getInt("id");
                String name = rst.getString("name");
                Double price = rst.getDouble("price");
                e.setId(id1);
                e.setName(name);
                e.setPrice(price);
            }
        }catch (Exception e1){
            e1.printStackTrace();
            throw e1;
        }finally {
            DBUtil.close(conn);
        }
        return e;
    }
    public void Update(int id,String name,double price) throws Exception {
        Connection connection = DBUtil.getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement("update goods set name=?,price=? where id =?;");
        preparedStatement.setString(1,name);
        preparedStatement.setDouble(2,price);
        preparedStatement.setInt(3,id);

        int i = preparedStatement.executeUpdate();
        connection.close();
    }
    public void totalprice(Total e) throws Exception {
        Connection conn = null;
        PreparedStatement prep = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement(
                    "INSERT INTO Total (total) VALUES (?)");
            prep.setDouble(1, e.getTotal());
            prep.executeUpdate();
        } catch (Exception e1) {
            e1.printStackTrace();
            throw e1;
        } finally {
            // Close PreparedStatement and Connection
            if (prep != null) {
                try {
                    prep.close();
                } catch (SQLException e2) {
                    e2.printStackTrace();
                }
            }
            DBUtil.close(conn);
        }
    }
    public static void main(String[] args) throws Exception {
       /* StudentDAO dao = new StudentDAO();
        Student e = new Student();
        e.setName("ww");
        e.setIdname(Integer.parseInt("123"));
        e.setPd("123");
        dao.save(e);
        System.out.println(e);
        */

    }
}

entity->CarItem ->Product -> Student ->Total 

package entiy;

// 可选的购物车条目类
public class CarItem {
    private Product product;
    private int quantity;
    // 其他属性

    // 构造方法、getter和setter方法

    public CarItem(Product product, int quantity /*, 其他属性 */) {
        this.product = product;
        this.quantity = quantity;
        // 初始化其他属性
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    @Override
    public String toString() {
        return "CarItem{" +
                "product=" + product +
                ", quantity=" + quantity +
                '}';
    }
}
package entiy;

public class Product {
    private int id;
    private String name;
    private double price;
    // 其他商品属性,如颜色、库存等

    // 构造方法、getter和setter方法


    public int getId() {
        return id;
    }

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

    public Product(/*, 其他属性 */) {
        this.name = name;
        this.price = price;
        // 初始化其他属性
    }

    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;
    }

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
package entiy;

public class Student {

    private String name;
    private int idname;
    private String pd;

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

    public int getIdname(){
        return idname;
    }
    public void setIdname(int idname){
        this.idname = idname;
    }

    public String getPd(){
        return pd;
    }
    public void setPd(String pd){
        this.pd = pd;
    }

    @Override
    public String toString(){
        return "Student{"+
                "name="+name+
                "idname="+idname+
                ",pd="+pd+
                '}';
    }

}


package entiy;

public class Total {
    private double total;
    private int id;

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

    public int getId() {
        return id;
    }

    public Total(/*, 其他属性 */) {
        this.total = total;
        this.id = id;
        // 初始化其他属性
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public double getTotal() {
        return total;
    }

    @Override
    public String toString() {
        return "Total{" +
                "total=" + total +
                ", id=" + id +
                '}';
    }
}


Servlet包下的许多服务 

 以下按顺序排列

package Servlet;

import dao.StudentDAO;
import entiy.Product;
import entiy.Student;

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.io.PrintWriter;

public class AddShoppingServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)

            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        //读取参数
        String name = request.getParameter("name");
        String price = request.getParameter("price");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();
        try {
            StudentDAO dao = new StudentDAO();
            //创建商品对象
            Product e1 = new Product();
            e1.setName(name);
            e1.setPrice(Double.parseDouble(price));
            System.out.println(e1.getName());
            System.out.println(e1.getPrice());
            dao.savegoods(e1);
            //重定向到主页面
            response.sendRedirect("list");
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        }
        out.close();
    }
}

 

package Servlet;

import dao.StudentDAO;
import entiy.Product;

import javax.servlet.RequestDispatcher;
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.io.PrintWriter;
import java.util.List;

public class listServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        try {
            StudentDAO dao = new StudentDAO();
            List<Product> products = dao.findAllgoods();
            request.setAttribute("goods",products);
            RequestDispatcher rd = request.getRequestDispatcher("shopping.jsp");
            rd.forward(request,response);
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        }
    }
}
package Servlet;

import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class LoginServlet extends HttpServlet {
    // 数据库连接信息(这里假设你使用MySQL数据库)
    private String jdbcURL = "jdbc:mysql://localhost:3306/sdjyy";
    private String jdbcUsername = "root";
    private String jdbcPassword = "asd123";

    protected void doPost(
            HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // 获取登录页面提交的账号和密码
        String username = request.getParameter("idname");
        String password = request.getParameter("pd");
        System.out.println(username);
        System.out.println(password);

        // 假设这里是你的登录逻辑,可以是数据库验证等
        boolean isValidUser = false;
        try {
            isValidUser = checkUser(username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 这里进行账号密码验证的逻辑,比如查询数据库
        // 注意:这里应该使用 PreparedStatement 或其他安全方式来避免 SQL 注入攻击

        // 示例中简单输出账号密码到控制台
        System.out.println("Username: " + username);
        System.out.println("Password: " + password);

        if (isValidUser) {
            // 登录成功,重定向到商品页面
            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            response.sendRedirect("list");
        } else {
            // 登录失败,可以返回到登录页面或者给出错误信息
            response.sendRedirect("denglu.jsp?error=1"); // 假设带有错误参数
        }
    }

    // 模拟用户验证,实际情况应根据你的业务逻辑实现
    private boolean checkUser(String username, String password) throws Exception {
        try {
            // 加载数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 连接数据库
            Connection connection = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);

            // 查询语句
            String sql = "SELECT * FROM users WHERE idname = ? AND pd = ?";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, username);
            statement.setString(2, password);
            System.out.println(username);
            System.out.println(password);

            // 执行查询
            ResultSet result = statement.executeQuery();

            // 如果查询到结果集,说明用户名和密码匹配
            if (result.next()) {
                return true;
            }

            // 关闭连接
            connection.close();
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 如果没有查询到结果或者出现异常,则验证失败
        return false;
    }
}

 

package Servlet;

import dao.StudentDAO;
import entiy.Total;

import javax.servlet.RequestDispatcher;
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.io.PrintWriter;
import java.util.List;

public class LSQDServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        try {
            StudentDAO dao = new StudentDAO();
            List<Total> totals = dao.findtotals();
            request.setAttribute("total",totals);
            RequestDispatcher rd = request.getRequestDispatcher("Checkout.jsp");
            rd.forward(request,response);
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        }
    }
}
package Servlet;

import dao.StudentDAO;
import entiy.Product;

import javax.servlet.RequestDispatcher;
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.io.PrintWriter;

public class SelectShoppingServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        StudentDAO studentDAO = new StudentDAO();
        String id = request.getParameter("id");
        System.out.println(id);
        PrintWriter writer = response.getWriter();
        try {
            Product product = studentDAO.findById(Integer.parseInt(id));
            request.setAttribute("goods",product );
            RequestDispatcher rd = request.getRequestDispatcher("Update.jsp");
            rd.forward(request,response);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
package Servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class ShoppingServlet extends HttpServlet {
    // 数据库连接信息(这里假设你使用MySQL数据库)
    private String jdbcURL = "jdbc:mysql://localhost:3306/sdjyy";
    private String jdbcUsername = "root";
    private String jdbcPassword = "asd123";

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession();
        String idname = (String) session.getAttribute("idname");

        if (idname != null) {
            // 如果成功获取到 idname,可以继续处理逻辑
            // 在这里可以根据 idname 进行数据库查询或者其他业务逻辑

            Connection conn = null;
            PreparedStatement stmt = null;
            ResultSet rs = null;

            try {
                conn = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);

                String sql = "SELECT * FROM users WHERE idname = ?";
                stmt = conn.prepareStatement(sql);
                stmt.setString(1, idname);

                rs = stmt.executeQuery();

                if (rs.next()) {
                    // 从结果集中获取其他信息或者执行其他操作
                    String username = rs.getString("idname");
                    System.out.println("Username retrieved: " + username);

                    // 将用户名存储到 session 中(如果需要的话)
                    session.setAttribute("username", username);

                    // 转发到 shopping.jsp 页面或者其他需要的页面
                    RequestDispatcher dispatcher = request.getRequestDispatcher("/shopping.jsp");
                    dispatcher.forward(request, response);
                } else {
                    // 如果未能从数据库中找到对应的记录,处理逻辑(例如跳转到错误页面)
                    response.sendRedirect("/denglu.jsp");
                }

            } catch (SQLException se) {
                se.printStackTrace();
                response.getWriter().println("数据库连接错误");
            } finally {
                // 关闭资源
                try {
                    if (rs != null) rs.close();
                    if (stmt != null) stmt.close();
                    if (conn != null) conn.close();
                } catch (SQLException se) {
                    se.printStackTrace();
                }
            }
        } else {
            // 如果未能成功取 idname,处理逻辑(例如跳转到登录页面或者错误页面)
            response.sendRedirect("/denglu.jsp");
        }
    }
}
package Servlet;

import dao.StudentDAO;
import entiy.Product;
import entiy.Total;

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.io.PrintWriter;

public class TotalServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)

            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String total = request.getParameter("total");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();
        try {
            StudentDAO dao = new StudentDAO();
           Total e1 = new Total();
            e1.setTotal(Double.parseDouble(total));

            System.out.println(e1.getTotal());
            dao.totalprice(e1);
            response.sendRedirect("list");
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        }
        out.close();
    }
}
package Servlet;

import dao.StudentDAO;

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 UpdateShoppingServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        StudentDAO productDAO = new StudentDAO();
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        // Get parameters from request
        String idStr = request.getParameter("id");
        String name = request.getParameter("name");
        String priceStr = request.getParameter("price");

        // Validate parameters
        if (idStr == null || name == null || priceStr == null || idStr.isEmpty() || name.isEmpty() || priceStr.isEmpty()) {
            response.getWriter().println("Invalid parameters. Please provide all fields.");
            return;
        }

        try {
            // Parse parameters
            int id = Integer.parseInt(idStr);
            double price = Double.parseDouble(priceStr);

            // Update product in DAO
            productDAO.Update(id, name, price);

            // Redirect to list page after successful update
            response.sendRedirect("list");

        } catch (NumberFormatException e) {
            // Handle if id or price is not a valid number
            response.getWriter().println("Invalid id or price format. Please enter valid numbers.");
        } catch (Exception e) {
            // Handle other exceptions
            throw new ServletException("Error updating product", e);
        }
    }
}
package Servlet;

import dao.StudentDAO;
import entiy.Student;

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.io.PrintWriter;

public class zhuceServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String idname = request.getParameter("idname");
        String pd = request.getParameter("pd");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        try {
            if (name == null || idname == null || pd == null ||
                    name.isEmpty() || idname.isEmpty() || pd.isEmpty()) {
                throw new IllegalArgumentException("参数不能为空");
            }

            StudentDAO dao = new StudentDAO();
            Student e1 = new Student();
            e1.setName(name);
            e1.setIdname(Integer.parseInt(idname));
            e1.setPd(pd);
            dao.save(e1);
            response.sendRedirect("denglu.jsp");
        } catch (NumberFormatException e) {
            out.println("ID必须是数字");
        } catch (IllegalArgumentException e) {
            out.println(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        } finally {
            out.close();
        }
    }

}


util->DBUtil

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
    public static Connection getConnection() throws Exception {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/sdjyy?" +
                            "useUnicode=true&characterEncoding=utf8","root","asd123"
            );
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
        return conn;
    }
    public static void close(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args)throws Exception{
        Connection conn = getConnection();
        System.out.println(conn);
    }
}

 


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">
    <servlet>
        <servlet-name>zhuce</servlet-name>
        <servlet-class>Servlet.zhuceServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>zhuce</servlet-name>
        <url-pattern>/zhuce</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>Servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Shopping</servlet-name>
        <servlet-class>Servlet.ShoppingServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Shopping</servlet-name>
        <url-pattern>/Shopping</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>list</servlet-name>
        <servlet-class>Servlet.listServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>list</servlet-name>
        <url-pattern>/list</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>add</servlet-name>
        <servlet-class>Servlet.AddShoppingServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>add</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>load</servlet-name>
        <servlet-class>Servlet.SelectShoppingServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>load</servlet-name>
        <url-pattern>/load</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>update</servlet-name>
        <servlet-class>Servlet.UpdateShoppingServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>update</servlet-name>
        <url-pattern>/update</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>total</servlet-name>
        <servlet-class>Servlet.TotalServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>total</servlet-name>
        <url-pattern>/total</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LSQD</servlet-name>
        <servlet-class>Servlet.LSQDServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LSQD</servlet-name>
        <url-pattern>/LSQD</url-pattern>
    </servlet-mapping>

</web-app>

JSP代码 

AddShopping.jsp

<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<%@page import="java.util.*,java.text.*,dao.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Add Product</title>
    <link rel="stylesheet" href="css/style.css">
    <style>
        /* 这里可以添加页面特定的 CSS 样式 */
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            margin: 0;
            padding: 0;
        }
        #wrap {
            width: 80%;
            margin: 0 auto;
            background-color: #fff;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        header {
            background-color: #333;
            color: #fff;
            padding: 10px;
            text-align: center;
        }
        #content {
            padding: 20px;
        }
        .form_table {
            width: 100%;
        }
        .form_table td {
            padding: 10px;
        }
        .inputgri {
            width: 100%;
            padding: 8px;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box;
            font-size: 14px;
        }
        .button {
            padding: 10px 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 14px;
        }
        .button:hover {
            background-color: #45a049;
        }
        #footer {
            background-color: #333;
            color: #fff;
            text-align: center;
            padding: 10px;
        }
    </style>
</head>
<body>
<div id="wrap">
    <div id="content">
        <h1>添加商品:</h1>
        <form action="add" method="post">
            <table class="form_table">
                <tr>
                    <td align="right">Name:</td>
                    <td><input type="text" class="inputgri" name="name" /></td>
                </tr>
                <tr>
                    <td align="right">Price:</td>
                    <td><input type="text" class="inputgri" name="price" /></td>
                </tr>
            </table>
            <p><input type="submit" class="button" value="确认添加"  /></p>
        </form>
    </div>
    <footer id="footer">
        sdjyw@126.com
    </footer>
</div>
</body>
</html>

 Checkoust.jsp

<%@ page import="entiy.Total" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<html>
<head>
    <title>Title</title>
    <style>
        .table {
            width: 100%;
            border-collapse: collapse;
        }
        .table_header {
            background-color: lightgray;
        }
        .table td, .table th {
            border: 1px solid black;
            padding: 8px;
        }
        .button {
            padding: 10px 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            cursor: pointer;
        }
    </style>

</head>
<body>
<h1>
    查看您的历史清单
</h1>
<h2>
    <p>
        <%
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        %>
        <%=sdf.format(date)%>
        <br />
    </p >
</h2>
<table class="table">
    <tr class="table_header">
        <td>
            ID
        </td>
        <td>
            消费金额
        </td>
    </tr>

    <%
        List<Total> totals = (List<Total>) request.getAttribute("total");
        if (totals != null && !totals.isEmpty()) {
            for (int i = 0; i < totals.size(); i++) {
                Total e = totals.get(i);
    %>
    <tr>
        <td><%= e.getId() %></td>
        <td><%= e.getTotal() %></td>
    </tr>
    <%
        }
    } else {
    %>
    <tr>
        <td colspan="2">没有找到消费金额记录。</td>
    </tr>
    <%
        }
    %>


</table>
<p>
    <input type="button" class="button" value="返回主页面" onclick="location='list'"/>
</p >
</div>
</div>
<div id="footer">
    <div id="footer_bg">
        sdjyy@444.com
    </div>
</div>
</div>
</body>
</html>

 denglu.jsp

<%@page contentType="text/html;charset=utf-8" pageEncoding="UTF-8" %>
<%@page import="java.util.*,java.text.*,entiy.*" %>
<!DOCTYPE html>
<html>
<head>
    <title>交易网登录</title>
    <script>
        // 检查是否有错误信息参数,如果有则显示弹框提示
        <% if ("1".equals(request.getParameter("error"))) { %>
        window.onload = function() {
            alert("您的账号或密码输入错误,请重试。");
        }
        <% } %>
    </script>
    <style>
        h1{
            font-size: 40px;
            color: blanchedalmond;
            text-align: center;
            font-family: 'Courier New', Courier, monospace;
            font-style: italic;
        }
    </style>
</head>
<body>
<h1 name="top">交易网</h1>
<table align="center" cellspacing="0">
    <tr>
        <td>
            <table cellpadding="0">
                <tr>
                    <!-- 使用相对路径引用图片 -->
                    <td><img src="img/3.jpg"></td>
                </tr>
                <tr>
                    <td>
                        <ul>
                            <li>全面支持iPhone/iPad及Android等系统</li>
                            <li>客户端、手机与网页,实现发送、阅读邮件立即同步普通登录手机号登录</li>
                        </ul>
                    </td>
                </tr>
            </table>
        </td>
        <td>
            <table border="1" cellspacing="0">
                <form action="Login" method="post">
                    <tr>
                        <td>
                            <table cellpadding="30">
                                <tr>
                                    <td colspan="2" align="center"><strong>登录</strong></td>
                                </tr>
                                <tr>
                                    <td>昵称:
                                        <input type="text" id="name" name="name">
                                    </td>
                                </tr>
                                <tr>
                                    <td>账号:
                                        <input type="text" id="idname" name="idname">
                                    </td>
                                </tr>
                                <tr>
                                    <td>密码:
                                        <input type="password" id="pd" name="pd">
                                    </td>
                                </tr>
                                <tr>
                                    <td align="center" colspan="2">
                                        <input type="submit" value="登录" onclick="f1();" />
                                        <!-- 注册按钮改用正确的 <a> 标签 -->
                                        <a href="zhuce.jsp"><input type="button" value="注册" onclick="f2();"></a>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </form>
            </table>
        </td>
    </tr>
    <tr>
        <td align="right">关于交易网</td>
    </tr>
</table>

</body>
</html>

 index.jsp

<%--
  Created by IntelliJ IDEA.
  User: NIL
  Date: 2024/7/17
  Time: 9:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  </body>
</html>

 shopping.jsp

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="entiy.Product" %>
<%@ page import="java.util.List" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>购物车</title>
    <meta charset="utf-8"/>
    <style type="text/css">
        body {
            background-color: #f0f0f0; /* 设置整个页面的背景颜色 */
            background-image: url('img/f2.png'); /* 设置背景图片 */
            background-size: cover; /* 图片铺满整个页面 */
            background-repeat: no-repeat; /* 不重复显示背景图片 */
            background-attachment: fixed; /* 固定背景图片,不随页面滚动 */
            font-family: Arial, sans-serif; /* 设置页面字体 */
            margin: 0; /* 去除页面默认的边距 */
            padding: 0; /* 去除页面默认的内边距 */
        }
        h1 {
            text-align: center;
            margin-top: 20px;
            color: #555;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }
        .user-info {
            text-align: right;
            margin-top: 10px;
            margin-right: 10px;
        }
        table {
            width: 100%;
            border: 1px solid #ddd;
            border-collapse: collapse;
            background-color: #fff;
            margin-top: 20px;
        }
        table th, table td {
            border: 1px solid #ddd;
            padding: 12px;
            text-align: center;
        }
        th {
            background-color: #f2f2f2;
        }
        td img {
            max-width: 50px;
            display: block;
            margin: 0 auto;
        }
        .button {
            padding: 12px 24px;
            font-size: 16px;
            background-color: #007bff;
            color: #fff;
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        .button:hover {
            background-color: #0056b3;
        }
        .checkout {
            text-align: center;
            margin-top: 20px;
        }
        input[type="submit"] {
            padding: 14px 28px;
            font-size: 18px;
            background-color: #28a745;
            color: #fff;
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        input[type="submit"]:hover {
            background-color: #218838;
        }
    </style>
</head>
<body>
<h1>交易平台</h1>
<!-- 用户信息 -->
<div style="text-align: right; margin-top: 10px; margin-right: 10px;">
    <form action="Shopping" method="post">
        <input type="hidden" name="action" value="getUsername">
        <%
            String username = (String) session.getAttribute("username");
            if (username == null) {
                username = "游客";
            }
        %>
        <span>您好,<%= session.getAttribute("username") %></span>
        <span> | 现在时间:  <%
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        %>
        <%=sdf.format(date )%>
        </span>
    </form>
</div>

<table>
    <tr>
        <th>商品</th>
        <th>单价(元)</th>
        <th>操作</th>
    </tr>
    <%
        List<Product> products = (List<Product>) request.getAttribute("goods");
        if (products == null) {
            System.out.println("Products list is null!");
            // 可以根据实际情况做进一步处理,如返回到上一页或者显示错误信息。
        } else {
            for (int i=0; i<products.size(); i++) {
                Product e = products.get(i);
    %>
    <tr>
        <td><%=e.getName()%></td>
        <td><%=e.getPrice()%></td>
        <td>
            <a href="load?id=<%=e.getId()%>">修改</a>
            <input type="button" value="加入购物车" onclick="add_shoppingcart(this);">
        </td>
    </tr>
    <%
            }
        }
    %>

</table>
<p>
    <input type="button" class="button" value="添加商品" onclick="location='AddShopping.jsp'"/>
</p>
<h1>购物车</h1>
<form action="total" method="post">
<table>
    <thead>
    <tr>
        <th>商品</th>
        <th>单价(元)</th>
        <th>数量</th>
        <th>金额(元)</th>
        <th>删除</th>
    </tr>
    </thead>
    <tbody id="goods">
    </tbody>
    <tfoot>
    <tr>
        <td colspan="3" align="right">总计</td>
        <td><input type="text" name="total" id="total" value="" /> </td>
        <td></td>
    </tr>
    </tfoot>
</table>
<!-- 去支付按钮 -->
<div style="text-align: center; margin-top: 20px;">
        <input type="submit" value="去支付" onclick="f1();" />
</div>
    </form>
<p>
   <input type="button"value="历史清单" onclick="location='LSQD'"/>
</p>
<script type="text/javascript">
   function f1(){
       alert("支付成功!");
   }
    function del(btn){
        //获取当前点击的删除按钮所在的tr
        var tr = btn.parentNode.parentNode;
        tr.parentNode.removeChild(tr);
        var tds = tr.getElementsByTagName("td");
        total();

    }
    function add(btn){
        var td = btn.parentNode;
        var inputs = td.getElementsByTagName("input");
        var text = inputs[1];
        var amount = parseInt(text.value)+1;
        text.value = amount;
        var tr = btn.parentNode.parentNode;
        var tds = tr.getElementsByTagName("td");
        var pr = parseFloat(tds[1].innerText);
        mny1 = pr*amount;
        //alert(mny1)
        tds[3].innerText = mny1;
        total();
    }
    function minu(btn){
        var td = btn.parentNode;
        var tr = td.parentNode;
        var inputs = td.getElementsByTagName("input");
        var text = inputs[1];
        if (text.value>1){
            var amount = parseInt(text.value)-1;
            text.value = amount;
            var tds = tr.getElementsByTagName("td");
            var pr = parseInt(tds[1].innerText);
            mny2 = pr*amount;
            tds[3].innerText = mny2;

        }else{
            tr.parentNode.removeChild(tr);
        }
        total();

    }
    function total(){
        //1.获取购物车中所有的商品行
        var tbody = document.getElementById("goods");
        var trs = tbody.getElementsByTagName("tr");
        //2.遍历这些行,获取每一行的金额
        var sum = 0;
        for(var i=0;i<trs.length;i++){
            var tr = trs[i];
            //取当前行的金额
            var tds = tr.getElementsByTagName("td");
            var mny = parseFloat(tds[3].innerText);
            sum = sum+mny;
        }
        document.getElementById("total").value=sum;

    }

    function add_shoppingcart(btn){
        var tbody = document.getElementById("goods");
        var tr = btn.parentNode.parentNode;
        var tds = tr.getElementsByTagName("td");
        var trs = tbody.getElementsByTagName("tr")
        var name = tds[0].innerText;
        var price = tds[1].innerText;
        for (var i=0;i<trs.length;i++) {
            var tr1 = trs[i];
            var tds1 = tr1.getElementsByTagName("td");
            var name1 = tds1[0].innerText;
        }

        if(name==name1) {
            var TD = tds1[2];
            var inputs = TD.getElementsByTagName("input");
            var text = inputs[1];
            var amount = parseInt(text.value) + 1;
            mny1 = pr * amount;
            tds1[3].innerText = mny1;
            total();
        }

        else {
            var ntr = tbody.insertRow();
            ntr.innerHTML =
                '<td>'+name+'</td>'+
                '<td>'+price+'</td>'+
                '<td align="center">'+
                '<input  type="button" value="-" onclick="minu(this);"/>'+
                '<input   type="text" size="3" readonly value="1"/>'+
                '<input  type="button" value="+" onclick="add(this);"/>'+
                '</td>'+
                '<td>'+price+'</td>'+
                '<td align="center"><input type="button" value="x" onclick="del(this);"/></td></tr>';

            total();}
    }
</script>
</body>
</html>

Update.jsp

<%@ page import="entiy.Product" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>修改商品信息</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css"
          href="css/style.css" />
</head>

<body>
<div id="wrap">
    <div id="top_content">
        <div id="header">
            <div id="rightheader">
            </div>
            <div id="topheader">
                <h1 id="title">
                   商品修改
                </h1>
            </div>
            <div id="navigation">
            </div>
        </div>
        <div id="content">
            <p id="whereami">
            </p>
            <h1>
                修改商品信息:
            </h1>
            <form action="update" method="post">
                <%
                    Product product = (Product) request.getAttribute("goods");

                    System.out.println(product.getId());
                %>
                <table cellpadding="0" cellspacing="0" border="0"
                       class="form_table">

                    <tr>
                        <td valign="middle" align="right">
                            商品:
                        </td>
                        <td valign="middle" align="left">
                            <input type="text" class="inputgri" name="name" value="<%=product.getName()%>" />
                        </td>
                    </tr>
                    <tr>
                        <td valign="middle" align="right">
                            价格:
                        </td>
                        <td valign="middle" align="left">
                            <input type="text" class="inputgri" name="price" value="<%=product.getPrice()%>" />
                            <input type="hidden" name="id" value="<%=product.getId()%>">
                        </td>
                    </tr>

                </table>
                <p>
                    <input type="submit" class="button" value="提交" />
                </p>
            </form>
        </div>
    </div>
    <div id="footer">
        <div id="footer_bg">
            ABC@126.com
        </div>
    </div>
</div>
</body>
</html>

zhuce.jsp

<%@page contentType="text/html;charset=utf-8" pageEncoding="UTF-8" %>
<%@page import="java.util.*,java.text.*,entiy.*" %>
<!DOCTYPE html>
<html>
<head>
    <title>交易网注册</title>
    <script>
        function f2(){
            alert("确认注册?");
        }
    </script>
    <style>
        h1 {
            font-size: 40px;
            color: blanchedalmond;
            text-align: center;
            font-family: 'Courier New', Courier, monospace;
            font-style: italic;
        }
    </style>
</head>
<body>
<h1 name="top">交易网</h1>
<table align="center" cellspacing="0">
    <tr>
        <td>
            <table border="1" cellspacing="0">
                <form action="zhuce" method="post">
                    <tr>
                        <td>
                            <table cellpadding="30">
                                <tr>
                                    <td colspan="2" align="center"><strong>注册</strong></td>
                                </tr>
                                <tr>
                                    <td>昵称:
                                        <input type="text" id="name" name="name">
                                    </td>
                                </tr>
                                <tr>
                                    <td>帐号:
                                        <input type="text" id="idname" name="idname">(输入九位以内整数字)
                                    </td>
                                </tr>
                                <tr>
                                    <td>密码:
                                        <input type="password" id="pd" name="pd">
                                    </td>
                                </tr>
                                <tr>
                                    <td align="center" colspan="2">
                                        <input type="submit" value="注册" onclick="f2();">
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </form>
            </table>
        </td>
    </tr>
    <tr>
        <td align="right">关于交易网</td>
    </tr>
</table>
</body>
</html>
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值