我一直在努力弄清楚如何将这个数据库连接引入到我的 servlet 中,但是失败了,因此在这里发布了这篇文章。
基本上,我使用的是我在这个网站上找到的这段代码——一个由 BalusC 教授的代码。
public class Config implements ServletContextListener {
private static final String ATTRIBUTE_NAME = "config";
private DataSource dataSource;
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
String databaseName = servletContext.getInitParameter("pract1");
try {
dataSource = (DataSource) new InitialContext().lookup("java:/comp/env/jdbc/TestDB");
} catch (NamingException e) {
throw new RuntimeException("Config failed: datasource not found", e);
}
}
@Override
public void contextDestroyed(ServletContextEvent event) {
System.out.println("contextDestroyed....");
}
public DataSource getDataSource() {
return dataSource;
}
public static Config getInstance(ServletContext servletContext) {
return (Config) servletContext.getAttribute(ATTRIBUTE_NAME);
}
}
他解释说你有这个类,并且所有 servlet 的连接都会启动一次,所以我认为这样做是一个很好的做法。
现在,我的问题是我不知道如何使在 Config、context.xml 文件等中设置的数据库连接在 servlet 中工作。
这是我尝试过的,但没有成功:
Connection con = null;
Config a = new Config();
con = (Connection) a.getDataSource();
DBConnect dbConnect = new DBConnect();
con = dbConnect.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM members");
我希望有人能告诉我如何将连接带入我的 doPost Servlet。