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

打印 上一主题 下一主题

主题 948|帖子 948|积分 2844

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


每博一文案
  1. 庄子说:"独往独来,是谓独有。独有之人,是谓至贵"。热闹是别人的狂欢,而孤独是自己的自由。
  2. 相聚总是短暂,唯孤独绵长,学会孤独为伍,才能找到浮世清欢。
  3. 金庸曾笔下人物说:"天上的白云聚了又聚,散了又散,人生离合,亦复如斯。" 人生一世,所有的人来人往,
  4. 聚散离合,都是缘分使然。缘来便聚,缘尽则散,聚是一团火,散是满天星。往后余生,与孤独和解,做自己的知音。
  5. 都说幸福的样子千篇一律,不幸的人却各有各的不幸。很多人都只能看到别人所拥有的,却没看到人所失去的。
  6. 没有人的生活是真正的容易。当你站在桥上看风景的时候,可能自己亦是别人眼中的风景。
  7. 所以不必羡慕别人,珍惜现在所拥有的,过好自己的人生才最重要。
  8.                  
  9.                                  ——————   《一禅心灵庙语》
复制代码
@
目录

1. 项目说明

介绍: 这里我们使用 纯粹Servlet 完成单表【对部门的】的增删改查操作。(B/S结构的。)
结构图

初始的欢迎页面

部门列表页面

部门详情

修改部门

删除部门:

新增部门:

2. 具体对应的功能的代码实现

2.1 准备工作:


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

再打开cmd 进入命令窗口,再进入到Mysql当中,输入如下命令:
  1. 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 的配置信息
  1. driver=com.mysql.cj.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/test
  3. user=root
  4. password=123
复制代码
再编写好相关的:DBUtil 类 ,具体代码的编写内容如下:
  1. package com.RainbowSea.DBUtil;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. import java.util.ResourceBundle;
  8. /**
  9. * JDBC工具类
  10. */
  11. public class DBUtil {
  12.     // 静态变量,在类加载时执行
  13.     // 都是一些从 jdbc.properties 读取到的配置文件的信息
  14.     // 该方法仅仅只会读取 “.properties" 的后缀的文件,注意:默认是从src目录开始的,有子目录需要写明子目录
  15.     private static ResourceBundle bundle = ResourceBundle.getBundle("com/RainbowSea/resources/jdbc");
  16.     private static String driver = bundle.getString("driver"); // 根据properties中的name读取对应的value值
  17.     private static String url = bundle.getString("url");
  18.     private static String user = bundle.getString("user");
  19.     private static String password = bundle.getString("password");
  20.     static {
  21.         // 注册驱动(注册驱动只需要注册一次,放在静态代码当中,DBUtil类加载的时候执行)
  22.         // "com.mysql.jdbc.Driver"是连接数据库的驱动,不能写死,因为以后可能还会连接Oracle数据库。
  23.         // OCP开闭原则: 对扩展开放,对修改关闭(什么是符合 OCP呢?在进行功能扩展的时候,不需要修改java源代码)
  24.         // Class.forName("com.mysql.jdbc.Driver")
  25.         try {
  26.             Class.forName(driver);  // 加载驱动
  27.         } catch (ClassNotFoundException e) {
  28.             throw new RuntimeException(e);
  29.         }
  30.     }
  31.     /**
  32.      * 获取数据库连接
  33.      * @return Connection
  34.      */
  35.     public static Connection getConnection() throws SQLException {
  36.         return DriverManager.getConnection(url,user,password);
  37.     }
  38.     /**
  39.      * 关闭连接
  40.      * @param connection
  41.      * @param statement
  42.      * @param resultSet
  43.      */
  44.     public static void close(Connection connection, Statement statement, ResultSet resultSet) {
  45.         // 注意:分开try,最后使用的资源,优先关闭
  46.         if(resultSet != null) {
  47.             try {
  48.                 resultSet.close();
  49.             } catch (SQLException e) {
  50.                 throw new RuntimeException(e);
  51.             }
  52.         }
  53.         if(statement != null) {
  54.             try {
  55.                 statement.close();
  56.             } catch (SQLException e) {
  57.                 throw new RuntimeException(e);
  58.             }
  59.         }
  60.         if(connection != null) {
  61.             try {
  62.                 connection.close();
  63.             } catch (SQLException e) {
  64.                 throw new RuntimeException(e);
  65.             }
  66.         }
  67.     }
  68. }
复制代码
2.4 功能一: index.html 该项目的欢迎页面如下:


默认在 web 当中,一个全局配置信息当中,会将名为 index.html 的文件,设置为该项目的欢迎页面。相应的具体内容大家可以移步至
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表