我正在创建一个基于Servlets / JSP的简单Web应用程序,该应用程序连接到MySQL数据库。以前,我创建了一个ConnectionParams
类和一个DBConnection
类。 ConnectionParams
类包含硬编码的数据库主机,用户名和密码。 DBConnection
基于该连接创建JDBC连接,然后将其用于数据库操作。
public class DBConnector extends HttpServlet {
Connection conn;
static DBConnectionProperties dbProps;
public DBConnector() {
try {
BufferedReader br = new BufferedReader(new FileReader(System.getProperty("java.io.tmpdir")+"\\zlmondbcon.txt"));
String line = br.readLine();
dbProps = new DBConnectionProperties(line);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection() {
return conn;
}
public Connection connect() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dbProps.getConnectionString(), dbProps.getUser(), dbProps.getPass());
return conn;
}
...
...
在将其部署到具有自己的单独数据库的测试环境时,我意识到了这个问题,DBA可能会更改用户名/密码等。因此,我创建了一个单独的文本文件,其详细信息为 WEB-INF \ dbConfig.txt 。包含的信息为:
dbName=mydbschema
dbUser=myuser
dbPass=mypass
dbType=mysql
每次服务器重新启动时,用户都必须在<TOMCAT HOME>\Webapps\myproject\WEB-INF
中编辑文件。每次主servlet启动时,它都会读取文件并存储一个全局ConnectionParams
对象。我可以看到这绝对不是最佳实践。
我正在寻找更强大的解决方案。
如果您认为措辞不正确,请编辑该问题。如果我应该添加更多详细信息,请添加评论。
答案 0 :(得分:0)
一个选择是将配置文件从war文件中拉出,并通过系统正确指定文件的路径和名称。这样可以简化编辑和维护配置的任务。
答案 1 :(得分:0)
我建议使用连接池,并为要使用的每个数据库准备一个连接。然后让用户选择所需的连接。这样,当用户名或密码更改或创建其他数据库时,您仍然需要进行一些手动输入,但是连接由容器处理。在通过Web应用程序处理连接时,必须特别注意关闭连接,以免出现空闲的数据库连接。