《Java Web 期末项目分享:MVC+DBUtils+c3p0 玩转数据库增删改查》——第一弹

一、项目结构搭建(MVC 分层)

在 IDEA 中创建 Web 项目,建立以下目录结构:

复制代码
项目名
├─ src/main/java
│  ├─ com.xxx.entity       // Model层:实体类
│  ├─ com.xxx.dao          // Model层:数据访问接口
│  ├─ com.xxx.dao.impl     // Model层:数据访问实现
│  ├─ com.xxx.service      // 业务逻辑层接口
│  ├─ com.xxx.service.impl // 业务逻辑层实现
│  └─ com.xxx.servlet      // Controller层:Servlet
├─ web
│  ├─ login.jsp            // View层:登录页
│  ├─ index.jsp            // View层:主页面(显示info列表)
│  ├─ add.jsp              // View层:新增页面
│  ├─ edit.jsp             // View层:修改页面
│  └─ WEB-INF
│     ├─ lib               // 存放Jar包
│     └─ web.xml           // 项目配置文件
└─ c3p0-config.xml         // c3p0连接池配置文件(放src目录)

三、核心模块实现

1. 基础配置

  • c3p0 配置 :编写c3p0-config.xml,配置 MySQL 连接信息(驱动、URL、用户名、密码);
  • web.xml 配置 :配置 Servlet 映射、欢迎页(比如默认跳转到login.jsp)、Session 超时时间。

2. Model 层实现

  • 实体类(Info.java) :对应info表字段,编写属性、getter/setter 方法;
  • DAO 层
    • InfoDao接口,定义增删改查方法(addInfodeleteInfoupdateInfoqueryInfo等);
    • InfoDaoImpl实现类,用 DBUtils 的QueryRunner(基于 c3p0 数据源)实现接口方法;
  • Service 层
    • InfoService接口,封装 DAO 方法;
    • InfoServiceImpl实现类,调用 DAO 层完成业务逻辑。

3. Controller 层(Servlet)

  • LoginServlet
    1. 接收登录页面的用户名 / 密码参数;
    2. 调用 Service 层验证(查询 info 表中是否存在该用户);
    3. 验证成功:用 Session 保存用户信息,跳转index.jsp;失败:提示错误并返回登录页;
    4. 可选:用 Cookie 保存用户名(实现 "记住我" 功能)。
  • InfoListServlet
    1. 检查 Session 是否有登录信息(无则跳登录页);
    2. 调用 Service 查询 info 表所有数据,存入 request;
    3. 转发到index.jsp显示列表。
  • AddInfoServlet:接收 add.jsp 的表单数据,调用 Service 新增记录,重定向到 InfoListServlet。
  • DeleteInfoServlet:接收要删除的 id 参数,调用 Service 删除记录,重定向到 InfoListServlet。
  • EditInfoServlet
    1. 接收 id 参数,查询该记录信息,存入 request 并转发到edit.jsp
    2. 接收 edit.jsp 的修改数据,调用 Service 更新记录,重定向到 InfoListServlet。
  • QueryInfoServlet :接收查询条件参数,调用 Service 按条件查询,转发到index.jsp显示结果。

4. View 层(JSP 页面)

(1)login.jsp:编写登录表单,提交到 LoginServlet;可读取 Cookie 自动填充用户名。

(2)index.jsp

  • 显示 info 表数据列表(用 JSTL/EL 表达式遍历 request 中的数据);
  • 增加 "新增" 按钮(跳 add.jsp)、每条记录的 "修改""删除" 按钮(对应 Servlet);
  • 增加查询表单,提交到 QueryInfoServlet。

(3)add.jsp/edit.jsp:编写表单,提交到对应 Servlet,实现数据录入 / 回显。

四、测试与优化

1、功能测

启动 Tomcat,测试登录、增删改查是否正常(检查数据库数据变化、页面显示是否正确);

2、异常处

添加空值判断、数据库操作异常捕获,给出友好提示;

3、Session 验

确保未登录时直接访问 Servlet 会跳转到登录页。

相关推荐
SelectDB技术团队2 小时前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据仓库·apache
小马过河R1 天前
数据仓库入门:是什么、怎么做、和数据库有什么区别?
大数据·数据库·数据仓库·架构·驾驭工程·fde
BYSJMG1 天前
计算机毕业设计选题推荐|【基于大数据的城市噪音数据可视化分析】Spark+K-Means+FP-Growth实战
大数据·hadoop·信息可视化·spark·课程设计
慧一居士3 天前
Apache StreamPark 功能和使用场景介绍、使用步骤详细示例
数据仓库
牛奶咖啡133 天前
大数据Hadoop运维应用实践——Hadoop平台常见问题与故障汇总、系统调优、网络规划与硬件存储选型
大数据·hadoop·hadoop集群操作系统调优·hadoop集群运维问题汇总·hadoop集群硬件规划·大数据平台网络规划·大数据平台硬件存储选型
雨晨源码(同名B站)3 天前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
赤土 炙焱4 天前
hiveserver2启动失败,磁盘满了
hive·hadoop
慧一居士4 天前
Hologres 功能及使用场景介绍,实践详细步骤示例
数据仓库
哥本哈士奇4 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
Francek Chen4 天前
【大数据处理与分析】数据仓库Hive:02 数据湖
大数据·数据仓库·hive·hadoop·分布式·数据分析