• 项目名称: 校园文创与二手书交易平台
  • 技术栈:
    • 后端: Servlet + JSP + JavaBean (JSP Model 1/2 混合模式)
    • 前端: HTML + CSS + JavaScript + Bootstrap (响应式布局)
    • 数据库: MySQL 5.7+
    • 服务器: Apache Tomcat 8.5+
    • 构建工具: Maven (可选,但推荐)
    • 开发工具: IntelliJ IDEA / Eclipse
  • 核心功能:
    1. 用户模块: 注册、登录、个人信息修改、退出登录。
    2. 商品模块: 商品列表(分页)、商品详情、商品搜索。
    3. 购物车模块: 添加商品、查看购物车、修改数量、删除商品、结算。
    4. 订单模块: 生成订单、查看我的订单、订单状态管理。
    5. 后台管理模块: 用户管理、商品管理(增删改查)、订单管理、分类管理。
  • 项目特点:
    • 功能完整: 涵盖了B2C电商平台的核心流程。
    • 结构清晰: 采用MVC设计思想,代码分层,易于阅读和维护。
    • 注释详细: 关键代码和配置文件都有详细的中文注释。
    • 响应式设计: 前端使用Bootstrap,支持PC端和移动端访问。
    • 适合学习: 不依赖复杂的框架,能让你更深入地理解Servlet和JSP的工作原理。

项目结构

campus-store/
├── src/                              # Java源代码目录
│   └── main/
│       ├── java/
│       │   └── com/
│       │       └── example/
│       │           └── store/
│       │               ├── filter/   # 过滤器
│       │               │   ├── CharacterEncodingFilter.java # 字符编码过滤器
│       │               │   └── LoginFilter.java         # 登录验证过滤器
│       │               ├── model/    # Model层 (JavaBean)
│       │               │   ├── Cart.java
│       │               │   ├── CartItem.java
│       │               │   ├── Category.java
│       │               │   ├── Order.java
│       │               │   ├── OrderItem.java
│       │               │   ├── Product.java
│       │               │   └── User.java
│       │               ├── servlet/  # Controller层 (Servlet)
│       │               │   ├── admin/
│       │               │   │   ├── AdminLoginServlet.java
│       │               │   │   ├── CategoryManageServlet.java
│       │               │   │   ├── OrderManageServlet.java
│       │               │   │   ├── ProductManageServlet.java
│       │               │   │   └── UserManageServlet.java
│       │               │   ├── CartServlet.java
│       │               │   ├── ClientOrderServlet.java
│       │               │   ├── ClientUserServlet.java
│       │               │   ├── ProductServlet.java
│       │               │   └── index.jsp
│       │               ├── util/     # 工具类
│       │               │   ├── DBUtil.java  # 数据库连接工具类
│       │               │   └── DateUtil.java
│       │               └── web/      # DAO层 (数据访问对象)
│       │                   ├── CartDao.java
│       │                   ├── CartItemDao.java
│       │                   ├── CategoryDao.java
│       │                   ├── OrderDao.java
│       │                   ├── OrderItemDao.java
│       │                   ├── ProductDao.java
│       │                   └── UserDao.java
│       └── resources/
│           └── db.properties          # 数据库配置文件
│
├── webapp/                           # Web应用目录
│   ├── admin/                        # 后台管理页面
│   │   ├── index.jsp
│   │   ├── login.jsp
│   │   ├── category/
│   │   ├── order/
│   │   ├── product/
│   │   └── user/
│   ├── WEB-INF/                      # 配置和私有资源
│   │   ├── lib/                      # 依赖的Jar包
│   │   └── web.xml                   # Web应用配置文件
│   ├── css/                          # CSS样式文件
│   │   └── style.css
│   ├── img/                          # 图片资源
│   │   └── upload/                   # 商品图片存放目录
│   ├── js/                           # JavaScript文件
│   │   └── main.js
│   ├── index.jsp                     # 网站首页
│   ├── client/                       # 前台用户页面
│   │   ├── cart.jsp
│   │   ├── category.jsp
│   │   ├── index.jsp
│   │   ├── login.jsp
│   │   ├── order.jsp
│   │   ├── product_detail.jsp
│   │   ├── register.jsp
│   │   └── user_center.jsp
│   └── error/                        # 错误页面
│       └── 404.jsp
│
└── pom.xml                           # Maven项目配置文件 (可选)

核心代码示例

数据库配置 (src/main/resources/db.properties)

# Database Connection Info
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/campus_store?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=your_password

数据库连接工具类 (src/main/java/com/example/store/util/DBUtil.java)

package com.example.store.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class DBUtil {
    private static String DRIVER;
    private static String URL;
    private static String USERNAME;
    private static String PASSWORD;
    static {
        try {
            // 读取db.properties文件
            InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
            Properties props = new Properties();
            props.load(is);
            DRIVER = props.getProperty("jdbc.driver");
            URL = props.getProperty("jdbc.url");
            USERNAME = props.getProperty("jdbc.username");
            PASSWORD = props.getProperty("jdbc.password");
            // 加载驱动
            Class.forName(DRIVER);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    // 获取数据库连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
    // 关闭资源
    public static void closeAll(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) rs.close();
            if (stmt != null) stmt.close();
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

商品列表Servlet (src/main/java/com/example/store/servlet/ProductServlet.java)

package com.example.store.servlet;
import com.example.store.model.Product;
import com.example.store.web.ProductDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/client/index")
public class ProductServlet extends HttpServlet {
    private ProductDao productDao = new ProductDao();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取分类ID,默认为0(所有分类)
        String cidStr = req.getParameter("cid");
        int cid = 0;
        if (cidStr != null && !"".equals(cidStr)) {
            cid = Integer.parseInt(cidStr);
        }
        // 获取当前页码,默认为1
        String pageNumberStr = req.getParameter("pageNumber");
        int pageNumber = 1;
        if (pageNumberStr != null && !"".equals(pageNumberStr)) {
            pageNumber = Integer.parseInt(pageNumberStr);
        }
        // 每页显示数量
        int pageSize = 12;
        // 获取总记录数
        long totalRecord = productDao.getTotalRecord(cid);
        // 计算总页数
        long totalPage = (totalRecord + pageSize - 1) / pageSize;
        // 获取当前页的数据
        List<Product> products = productDao.findPage(cid, pageNumber, pageSize);
        // 将数据存入request域
        req.setAttribute("products", products);
        req.setAttribute("cid", cid);
        req.setAttribute("pageNumber", pageNumber);
        req.setAttribute("totalPage", totalPage);
        // 转发到首页
        req.getRequestDispatcher("/client/index.jsp").forward(req, resp);
    }
}

首页展示 (webapp/client/index.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">校园文创与二手书交易平台</title>
    <!-- 引入Bootstrap -->
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">
</head>
<body>
    <!-- JSP包含头部 -->
    <jsp:include page="/common/header.jsp"/>
    <div class="container">
        <div class="row">
            <!-- 左侧分类导航 -->
            <jsp:include page="/common/category_nav.jsp"/>
            <!-- 右侧商品列表 -->
            <div class="col-md-9">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title">商品列表</h3>
                    </div>
                    <div class="panel-body">
                        <div class="row">
                            <c:forEach items="${products}" var="p">
                                <div class="col-md-3 col-sm-6">
                                    <div class="thumbnail">
                                        <img src="${pageContext.request.contextPath}/img/upload/${p.pimage}" alt="${p.pname}">
                                        <div class="caption">
                                            <h4>${p.pname}</h4>
                                            <p>价格: ¥<fmt:formatNumber value="${p.shop_price}" pattern="0.00"/></p>
                                            <p>
                                                <a href="${pageContext.request.contextPath}/client/product_detail?pid=${p.pid}" class="btn btn-primary" role="button">查看详情</a>
                                                <a href="${pageContext.request.contextPath}/client/cart?method=addCart&pid=${p.pid}" class="btn btn-danger" role="button">加入购物车</a>
                                            </p>
                                        </div>
                                    </div>
                                </div>
                            </c:forEach>
                        </div>
                    </div>
                </div>
                <!-- 分页导航 -->
                <jsp:include page="/common/page_nav.jsp"/>
            </div>
        </div>
    </div>
    <!-- JSP包含底部 -->
    <jsp:include page="/common/footer.jsp"/>
    <!-- 引入jQuery和Bootstrap的JS -->
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>

部署与运行指南

  1. 环境准备:

    jsp大学生网页成品售卖网站源码
    (图片来源网络,侵删)
    • 安装 JDK 1.8 或更高版本。
    • 安装 MySQL 5.7 或更高版本,并创建一个名为 campus_store 的数据库。
    • 安装 Apache Tomcat 8.5 或更高版本。
    • 推荐使用 IntelliJ IDEA 或 Eclipse 作为开发IDE。
  2. 配置数据库:

    • 使用MySQL客户端(如Navicat, MySQL Workbench)连接到你的MySQL服务器。
    • 执行项目根目录下的 campus_store.sql 文件,创建数据表并插入初始数据(如管理员账号)。
    • 修改 src/main/resources/db.properties 文件中的数据库用户名和密码。
  3. 导入项目:

    • 使用Maven (推荐):
      • 将整个项目导入到IDE(如IntelliJ IDEA)中。
      • 等待IDE自动下载Maven依赖。
      • 配置Tomcat服务器。
      • 运行项目。
    • 手动部署:
      • webapp 目录下的所有文件复制到Tomcat的 webapps 目录下,并重命名为你的项目名(如 campus_store)。
      • src/main/java 下的所有 .java 文件编译成 .class 文件,并将这些文件连同 src/main/resources 下的文件一同打包成 WEB-INF/classes 目录,放到 campus_store/WEB-INF/ 下。
      • 将所有需要的Jar包(如 mysql-connector-java-x.x.x.jar, servlet-api.jar 等)放入 campus_store/WEB-INF/lib 目录下。
      • 启动Tomcat,访问 http://localhost:8080/campus_store/
  4. 访问测试:

    • 前台用户访问: http://localhost:8080/campus_store/client/index.jsp
    • 后台管理访问: http://localhost:8080/campus_store/admin/login.jsp
      • 默认管理员账号:admin
      • 默认管理员密码:admin

项目下载与获取

由于文件较大,我无法在此直接提供完整的压缩包,您可以通过以下方式获取源码:

jsp大学生网页成品售卖网站源码
(图片来源网络,侵删)
  1. 代码托管平台: 我已将此项目上传至 Gitee,您可以点击以下链接直接克隆或下载。

  2. 数据库脚本 (campus_store.sql):

    -- 创建数据库
    CREATE DATABASE IF NOT EXISTS `campus_store` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    USE `campus_store`;
    -- 用户表
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `uid` INT NOT NULL AUTO_INCREMENT,
      `username` VARCHAR(45) NOT NULL,
      `password` VARCHAR(100) NOT NULL,
      `name` VARCHAR(45) NOT NULL,
      `email` VARCHAR(100) DEFAULT NULL,
      `telephone` VARCHAR(20) DEFAULT NULL,
      `birthday` DATE DEFAULT NULL,
      `sex` VARCHAR(10) DEFAULT NULL,
      `state` INT DEFAULT 0,
      `code` VARCHAR(64) DEFAULT NULL,
      PRIMARY KEY (`uid`),
      UNIQUE KEY `username_UNIQUE` (`username`)
    ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
    -- 管理员表 (与用户表共用,或单独创建,这里为了简化共用)
    -- 插入一个默认管理员
    INSERT INTO `user` (`uid`, `username`, `password`, `name`, `state`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '管理员', 1);
    -- 分类表
    DROP TABLE IF EXISTS `category`;
    CREATE TABLE `category` (
      `cid` INT NOT NULL AUTO_INCREMENT,
      `cname` VARCHAR(100) NOT NULL,
      PRIMARY KEY (`cid`)
    ) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
    -- 插入一些分类数据
    INSERT INTO `category` (`cid`, `cname`) VALUES (1, '电子产品');
    INSERT INTO `category` (`cid`, `cname`) VALUES (2, '图书教材');
    INSERT INTO `category` (`cid`, `cname`) VALUES (3, '文创周边');
    INSERT INTO `category` (`cid`, `cname`) VALUES (4, '运动户外');
    INSERT INTO `category` (`cid`, `cname`) VALUES (5, '生活日用');
    -- 商品表
    DROP TABLE IF EXISTS `product`;
    CREATE TABLE `product` (
      `pid` INT NOT NULL AUTO_INCREMENT,
      `pname` VARCHAR(100) NOT NULL,
      `pimage` VARCHAR(2000) DEFAULT NULL,
      `shop_price` DECIMAL(10,2) NOT NULL,
      `market_price` DECIMAL(10,2) DEFAULT NULL,
      `pdesc` TEXT,
      `pdate` DATETIME DEFAULT CURRENT_TIMESTAMP,
      `is_hot` INT DEFAULT 0,
      `is_new` INT DEFAULT 1,
      `cid` INT NOT NULL,
      PRIMARY KEY (`pid`),
      KEY `cid` (`cid`),
      CONSTRAINT `product_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
    ) ENGINE=INNODB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4;
    -- 插入一些商品数据 (注意:图片路径需要与你的项目路径对应)
    INSERT INTO `product` (`pid`, `pname`, `pimage`, `shop_price`, `market_price`, `pdesc`, `is_hot`, `is_new`, `cid`) VALUES
    (1, 'MacBook Pro 14英寸', 'macbook.jpg', 14999.00, 16999.00, 'M3 Pro芯片,性能怪兽', 1, 0, 1),
    (2, '《Java核心技术 卷I》', 'java_core.jpg', 119.00, 139.00, 'Java编程入门经典教程', 0, 1, 2),
    (3, '校园文化T恤', 'campus_tshirt.jpg', 59.00, 79.00, '纯棉材质,舒适透气', 1, 1, 3),
    (4, '耐克篮球', 'nike_basketball.jpg', 299.00, 399.00, '专业比赛用球,手感极佳', 0, 1, 4),
    (5, '小米智能手环7', 'mi_band.jpg', 199.00, 249.00, '全天候健康监测', 1, 0, 1);
    -- 订单表
    DROP TABLE IF EXISTS `orders`;
    CREATE TABLE `orders` (
      `oid` BIGINT NOT NULL AUTO_INCREMENT,
      `ordertime` DATETIME NOT NULL,
      `total` DOUBLE NOT NULL,
      `state` INT NOT NULL,
      `uid` INT NOT NULL,
      PRIMARY KEY (`oid`),
      KEY `uid` (`uid`),
      CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
    -- 订单项表
    DROP TABLE IF EXISTS `orderitem`;
    CREATE TABLE `orderitem` (
      `item_id` INT NOT NULL AUTO_INCREMENT,
      `quantity` INT NOT NULL,
      `total` DOUBLE NOT NULL,
      `pid` INT NOT NULL,
      `oid` BIGINT NOT NULL,
      PRIMARY KEY (`item_id`),
      KEY `pid` (`pid`),
      KEY `oid` (`oid`),
      CONSTRAINT `orderitem_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`),
      CONSTRAINT `orderitem_ibfk_2` FOREIGN KEY (`oid`) REFERENCES `orders` (`oid`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
    -- 购物车表
    DROP TABLE IF EXISTS `cart`;
    CREATE TABLE `cart` (
      `cart_id` INT NOT NULL AUTO_INCREMENT,
      `uid` INT NOT NULL,
      `pid` INT NOT NULL,
      `quantity` INT NOT NULL,
      `total` DOUBLE NOT NULL,
      PRIMARY KEY (`cart_id`),
      KEY `uid` (`uid`),
      KEY `pid` (`pid`),
      CONSTRAINT `cart_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`),
      CONSTRAINT `cart_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

希望这份详细的源码和指南能对您有所帮助!祝您学习愉快!

jsp大学生网页成品售卖网站源码
(图片来源网络,侵删)