使用“纯”Servlet做一个单表的CRUD操作

每博一文案
- 庄子说:"独往独来,是谓独有。独有之人,是谓至贵"。热闹是别人的狂欢,而孤独是自己的自由。
- 相聚总是短暂,唯孤独绵长,学会孤独为伍,才能找到浮世清欢。
- 金庸曾笔下人物说:"天上的白云聚了又聚,散了又散,人生离合,亦复如斯。" 人生一世,所有的人来人往,
- 聚散离合,都是缘分使然。缘来便聚,缘尽则散,聚是一团火,散是满天星。往后余生,与孤独和解,做自己的知音。
- 都说幸福的样子千篇一律,不幸的人却各有各的不幸。很多人都只能看到别人所拥有的,却没看到人所失去的。
- 没有人的生活是真正的容易。当你站在桥上看风景的时候,可能自己亦是别人眼中的风景。
- 所以不必羡慕别人,珍惜现在所拥有的,过好自己的人生才最重要。
-
- —————— 《一禅心灵庙语》
复制代码 @
目录
1. 项目说明
介绍: 这里我们使用 纯粹 的 Servlet 完成单表【对部门的】的增删改查操作。(B/S结构的。)
结构图

初始的欢迎页面

部门列表页面

部门详情

修改部门

删除部门:

新增部门:

2. 具体对应的功能的代码实现
2.1 准备工作:
- 首先我们使用数据库,存储数据,这里我们使用的数据库是 MYSQL 。
- 我们需要准备一个名为 dept的数据表,并插入一些数据。
- create table dept (
- depton int primary key,
- dname varchar(255),
- loc varchar(255)
- );
- insert into dept(depton,dname,loc) values(10,'xiaoShouBu','BEIJING');
- insert into dept(depton,dname,loc) values(20,'YanFaBu','SHANGHAI');
- insert into dept(depton,dname,loc) values(30,'JisShuBu','GUANGZHOU');
- insert into dept(depton,dname,loc) values(40,'MeiTiBu','SHENZHEN');
- select * from dept;
复制代码 小技巧: MySQL 在 cmd 命令中,批量执行 sql语句的方法:如下,首先将编写好的 .sql 文件存储起来。如下图所示,

再打开cmd 进入命令窗口,再进入到Mysql当中,输入如下命令:- source 后接文件路径(要执行的批量的.sql文件)
复制代码
当前数据表 dept 的信息内容如下:

- 为该模块导入 MYSQL的 JDBC 的 jar 包。
注意: 因为我们是在 Tomcat 服务器当中部署项目的,所以我们需要在 WEB-INF 的目录下,创建一个名为 lib 的目录文件夹,用来存放相关的 依赖jar 包,注意路径位置不可以修改,目录文件必须为 lib 不然,当你启动的Tocmat 服务器的时候,是无法找到该对应的 依赖jar 包的。具体如下,我们将 Mysql对应的 jdbc jar 包导入其中。
- 创建一个webapp(给这个webapp添加servlet-api.jar和jsp-api.jar到classpath当中。)
- 向webapp中添加连接数据库的jar包(mysql驱动)
- 必须在WEB-INF目录下新建lib目录,然后将mysql的驱动jar包拷贝到这个lib目录下。这个目录名必须叫做lib,全部小写的。

2.2 模块目录结构

2.3 工具类 DBUtil
这里因为我们要连接数据库,所以我们编写一个连接Mysql 数据库的 工具类,这里我们名为一个 DBUtil 的工具类。
这里我们通过读取配置jdbc.properties的配置文件的方式,注册相对应的Mysql驱动 。
如下是相关: jdbc.properties 的配置信息- driver=com.mysql.cj.jdbc.Driver
- url=jdbc:mysql://localhost:3306/test
- user=root
- password=123
复制代码 再编写好相关的:DBUtil 类 ,具体代码的编写内容如下:- package com.RainbowSea.DBUtil;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ResourceBundle;
- /**
- * JDBC工具类
- */
- public class DBUtil {
- // 静态变量,在类加载时执行
- // 都是一些从 jdbc.properties 读取到的配置文件的信息
- // 该方法仅仅只会读取 “.properties" 的后缀的文件,注意:默认是从src目录开始的,有子目录需要写明子目录
- private static ResourceBundle bundle = ResourceBundle.getBundle("com/RainbowSea/resources/jdbc");
- private static String driver = bundle.getString("driver"); // 根据properties中的name读取对应的value值
- private static String url = bundle.getString("url");
- private static String user = bundle.getString("user");
- private static String password = bundle.getString("password");
- static {
- // 注册驱动(注册驱动只需要注册一次,放在静态代码当中,DBUtil类加载的时候执行)
- // "com.mysql.jdbc.Driver"是连接数据库的驱动,不能写死,因为以后可能还会连接Oracle数据库。
- // OCP开闭原则: 对扩展开放,对修改关闭(什么是符合 OCP呢?在进行功能扩展的时候,不需要修改java源代码)
- // Class.forName("com.mysql.jdbc.Driver")
- try {
- Class.forName(driver); // 加载驱动
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
- /**
- * 获取数据库连接
- * @return Connection
- */
- public static Connection getConnection() throws SQLException {
- return DriverManager.getConnection(url,user,password);
- }
- /**
- * 关闭连接
- * @param connection
- * @param statement
- * @param resultSet
- */
- public static void close(Connection connection, Statement statement, ResultSet resultSet) {
- // 注意:分开try,最后使用的资源,优先关闭
- if(resultSet != null) {
- try {
- resultSet.close();
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- if(statement != null) {
- try {
- statement.close();
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- if(connection != null) {
- try {
- connection.close();
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
复制代码 2.4 功能一: index.html 该项目的欢迎页面如下:
默认在 web 当中,一个全局配置信息当中,会将名为 index.html 的文件,设置为该项目的欢迎页面。相应的具体内容大家可以移步至
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |