如何在servlet中调用Config.java?
我一直努力想弄清楚如何将这个数据库连接引入到我的servlet中,但失败了,因此在这里发布了这篇文章如何在servlet中调用Config.java?,java,Java,我一直努力想弄清楚如何将这个数据库连接引入到我的servlet中,但失败了,因此在这里发布了这篇文章 Connection con = ((DataSource) a.getDataSource()).getConnection(); 基本上,我使用的是我在这个网站上找到的代码——一个由BalusC教授的代码 public class Config implements ServletContextListener { private static final String ATTR
Connection con = ((DataSource) a.getDataSource()).getConnection();
基本上,我使用的是我在这个网站上找到的代码——一个由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);
}
}
Connection con = ((DataSource) a.getDataSource()).getConnection();
他解释说,您有这个类,所有servlet的连接都会启动一次,所以我认为这样做是一个很好的实践
Connection con = ((DataSource) a.getDataSource()).getConnection();
现在,我的问题是,我不知道如何使在Config、context.xml文件等中设置的数据库连接在servlet中工作
Connection con = ((DataSource) a.getDataSource()).getConnection();
以下是我尝试过的,但没有成功:
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");
Connection con = ((DataSource) a.getDataSource()).getConnection();
我希望有人能告诉我如何将连接引入我的doPost Servlet。使用在
ServletContextListner
中创建的连接的更好方法是将其设置为ServletContext中的一个属性,如下所示:
event.getServletContext().setAttribute("connection_name", connection_object);
connection_object = config.getServletContext().getAttribute("connection_name");
Connection con = ((DataSource) a.getDataSource()).getConnection();
在此之后,您可以在任何servlet中使用此连接\u对象
,如下所示:
event.getServletContext().setAttribute("connection_name", connection_object);
connection_object = config.getServletContext().getAttribute("connection_name");
Connection con = ((DataSource) a.getDataSource()).getConnection();
将数据源转换为连接
Connection con = null;
con = (Connection) a.getDataSource();
Connection con = ((DataSource) a.getDataSource()).getConnection();
请换成
DataSource dataSource= null;
dataSource = (DataSource) a.getDataSource(); // Your casting datasource to Connection
//get the connection from datasource
if (dataSource!= null) {
con = dataSource.getConnection();
}
if (con!= null) {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM members");
}
Connection con = ((DataSource) a.getDataSource()).getConnection();
使用以下命令:
Connection con = ((DataSource) a.getDataSource()).getConnection();
与此相反:
Connection con = ((DataSource) a.getDataSource()).getConnection();
Connection con = null;
con = (Connection) a.getDataSource();
DBConnect dbConnect = new DBConnect();
con = dbConnect.getConnection();
假设您已设置:
Connection con = ((DataSource) a.getDataSource()).getConnection();
Config a = Config.getInstance(request.getServletContext());
什么是
con=(连接)a.getDataSource()中的a
代码>对不起,我漏掉了这一行:Config a=new Config();OP的代码已经包含了对具有getDataSource()方法的配置实例的引用。这是多余的。再看看OP的代码,我现在已经包括了Conig a=Config.getInstance(request.getServletContext());con=a.getDataSource().getConnection();但是,Tomcat仍然在向我发送错误消息:重新加载名为[/Web1]的上下文已启动contextDestroyed。。。。2013年9月30日上午7:19:53 org.apache.catalina.core.StandardContext重新加载信息:已完成重新加载名为[/Web1]的上下文,这不是错误。您的con对象是否按预期工作?我想是的,因为测试连接工作正常。现在,我添加了autoDeploy=“false”,上面的问题消失了。我收到另一个错误:启动ProtocolHandler[“http-apr-8080”]2013年10月1日8:22:19 PM org.apache.coyote.AbstractProtocol启动信息:启动ProtocolHandler[“ajp-apr-8009”]2013年10月1日8:22:19 PM org.apache.catalina.startup.catalina start浏览器给我一个http 405错误,Tomcat显示另一个错误:取消部署上下文[/Web1]2013年10月1日10:28:41 PM org.apache.catalina.startup.HostConfig部署描述符信息:部署配置描述符C:\\Tomcat\apache-Tomcat-7.0.42\conf\catalina\localhost\Web1.xml