IT评测·应用市场-qidao123.com
标题:
使用“纯”Servlet做一个单表的CRUD操作
[打印本页]
作者:
我可以不吃啊
时间:
2023-4-11 08:56
标题:
使用“纯”Servlet做一个单表的CRUD操作
使用“纯”Servlet做一个单表的CRUD操作
每博一文案
庄子说:"独往独来,是谓独有。独有之人,是谓至贵"。热闹是别人的狂欢,而孤独是自己的自由。
相聚总是短暂,唯孤独绵长,学会孤独为伍,才能找到浮世清欢。
金庸曾笔下人物说:"天上的白云聚了又聚,散了又散,人生离合,亦复如斯。" 人生一世,所有的人来人往,
聚散离合,都是缘分使然。缘来便聚,缘尽则散,聚是一团火,散是满天星。往后余生,与孤独和解,做自己的知音。
都说幸福的样子千篇一律,不幸的人却各有各的不幸。很多人都只能看到别人所拥有的,却没看到人所失去的。
没有人的生活是真正的容易。当你站在桥上看风景的时候,可能自己亦是别人眼中的风景。
所以不必羡慕别人,珍惜现在所拥有的,过好自己的人生才最重要。
—————— 《一禅心灵庙语》
复制代码
@
目录
使用“纯”Servlet做一个单表的CRUD操作
每博一文案
1. 项目说明
2. 具体对应的功能的代码实现
2.1 准备工作:
2.2 模块目录结构
2.3 工具类 DBUtil
2.4 功能一: index.html 该项目的欢迎页面如下:
2.5 功能二:部门列表 DeptListServlet
2.6 功能三:查看部门详情 DeptDetailServlet
2.7 功能四:删除部门 DeptDelServlet
2.8 功能五:新增部门 DeptSaveServlet
2.9 功能六:跳转到修改部门的页面 DepEditServlet
2.10 功能七:修改部门 DeptSaveServlet
3. 最后的 web.xml 配置信息
4. 优化方案: @WebServlet 注解 + 模板方法
5. 总结:
6. 最后:
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 的文件,设置为该项目的欢迎页面。相应的具体内容大家可以移步至
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4