Tomcat下通过资源获取连接数据库
package com.jess;
import javax.annotation.Resource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.io.IOException;
@WebServlet("/")
public class MyServlet extends HttpServlet {
// 可以通过lookup获取
@Resource(lookup = "java:comp/env/dataSource/mysql/jzy2")
DataSource dataSource2;
//也可以通过name属性获取
@Resource(name = "java:comp/env/dataSource/mysql/jzy1")
DataSource dataSource3;
@Resource(lookup = "java:comp/env/dataSource/mysql/jzy1")
DataSource dataSource4;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Context ctx = null;
try {
ctx = new InitialContext();
DataSource dataSource1 =
(DataSource) ctx.lookup("java:comp/env/dataSource/mysql/jzy2");
System.out.println("手动获取资源1");
System.out.println("dataSource = " + dataSource1);
System.out.println(dataSource1.getConnection());
System.out.println("webServlet+Resource注解获取资源2");
System.out.println("dataSource2 = " + dataSource2);
System.out.println(dataSource2.getConnection());
System.out.println("webServlet+Resource注解获取资源3");
System.out.println("dataSource3 = " + dataSource3);
System.out.println(dataSource3.getConnection());
System.out.println("webServlet+Resource注解获取资源4");
System.out.println("dataSource4 = " + dataSource4);
System.out.println(dataSource4.getConnection());
System.out.println("数据库连接成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
由资源1和资源2可见手动获取的资源数据库和通过注解反射获取的资源是同一个资源数据库,由资源3和资源4可以看到通过name和lookup获取的资源相同,由资源2和资源3可以看到在一个工程或一个文件或一个类可以引用不同的数据库资源。
配置文件context.xml