JSTL实现显示数据库中商品信息数据库连接代码是否重复
发表在JavaWeb图书答疑 2019-12-26 《Java Web开发实例大全 基础卷》第8章 JSTL标签库
是否精华
版块置顶:

在JSTL实现显示数据库商品信息中,在ConnDB中有两句

private static String dbClassName = "com.mysql.jdbc.Driver";//定义保存数据库驱动的变量

private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_Database07?user=root&password=111&useUnicode=true"

而在后面定义构造方法中有以下两句,我个人理解以下两句是从property中读取数据库连接的信息,那么以上两句是否重复?

dbClassName = prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动

dbUrl = prop.getProperty("DB_URL", dbUrl); //获取URL


分享到:
精彩评论 3
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-12-26
沙发

我在水中没有找到你给出的这个例子。

如果你能去API里看一下Properties这个类的用法,你就知道这些语句不重复了。方法从配置文件读取配置,如果读到的是null,就采用默认配置。

image.png

视线模糊
学分:15 LV2
2019-12-26
板凳

image.png

我使用的是这个版本的书不知道是不是老版本

这个案列首先创建了一个连接数据库的类ConnDB,

public class ConnDB {

public Connection conn = null; // 声明Connection对象的实例

public Statement stmt = null; // 声明Statement对象的实例

public ResultSet rs = null; // 声明ResultSet对象的实例

private static String propFileName = "connDB.properties"; // 指定资源文件保存的位置

private static Properties prop = new Properties(); // 创建并实例化Properties对象的实例

private static String dbClassName = "com.mysql.jdbc.Driver";//定义保存数据库驱动的变量

private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_Database07?user=root&password=111&useUnicode=true";

public ConnDB() { //定义构造方法

try { //捕捉异常

//将Properties文件读取到InputStream对象中

InputStream in = getClass().getResourceAsStream(propFileName);

prop.load(in); // 通过输入流对象加载Properties文件

dbClassName = prop.getProperty("DB_CLASS_NAME"); // 获取数据库驱动

dbUrl = prop.getProperty("DB_URL", dbUrl); //获取URL

} catch (Exception e) {

e.printStackTrace(); // 输出异常信息

}

}


public static Connection getConnection() {

Connection conn = null;

try { //连接数据库时可能发生异常因此需要捕捉该异常

Class.forName(dbClassName).newInstance(); //装载数据库驱动

//建立与数据库URL中定义的数据库的连接

conn = DriverManager.getConnection(dbUrl);

} catch (Exception ee) {

ee.printStackTrace(); //输出异常信息

}

if (conn == null) {

System.err

.println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:"

+ dbClassName

+ "\r\n链接位置:"

+ dbUrl); //在控制台上输出提示信息

}

return conn; //返回数据库连接对象

}


/*

* 功能:执行查询语句

*/

public ResultSet executeQuery(String sql) {

try { // 捕捉异常

conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

rs = stmt.executeQuery(sql); //执行SQL语句,并返回一个ResultSet对象rs

} catch (SQLException ex) {

System.err.println(ex.getMessage()); // 输出异常信息

}

return rs; // 返回结果集对象

}


/*

* 功能:关闭数据库的连接

*/

public void close() {

try { // 捕捉异常

if (rs != null) { // 当ResultSet对象的实例rs不为空时

rs.close(); // 关闭ResultSet对象

}

if (stmt != null) { // 当Statement对象的实例stmt不为空时

stmt.close(); // 关闭Statement对象

}

if (conn != null) { // 当Connection对象的实例conn不为空时

conn.close(); // 关闭Connection对象

}

} catch (Exception e) {

e.printStackTrace(System.err); // 输出异常信息

}

}


}

然后创建了connDB.properties

DB_CLASS_NAME=com.mysql.jdbc.Driver

DB_URL=jdbc:mysql://127.0.0.1:3306/db_database07?user=root&password=111&useUnicode=true

这个为什么要声明两次数据库驱动和数据库URL?

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-12-27
地板

你给的代码中,DB_URL只被声明过一次,没有被声明两次。

我之前的回复已经说了,Properties是用来读取配置文件的,API对该类方法的解释写的清清楚楚。如果配置文件中有对应值,就用配置文件的值;配置文件没有对应值,就用代码中的默认值。

首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照