3) res-type 资源类型。见上面的
为了方便做解释直接在JSP中使用资源:
这是在$CATALINA_HOME/webapps/test下的某级子目录里的jsp网页文件部分代码:
………………
………………
// 数据库操作
Context ctx=null;
Connection cnn=null;
Statement stmt=null;
ResultSet rs=null;
try
{
ctx=new InitialContext();
if(ctx==null)
throw new Exception("没有匹配的环境");
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
if(ds==null)
throw new Exception("没有匹配数据库");
cnn=ds.getConnection();
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from table1");
………………
………………
}
finally
{
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(cnn!=null)
cnn.close();
if(ctx!=null)
ctx.close();
}
%>
代码说明:
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
上面这句应用了刚才设的资源。
资源使用完要释放,尤其是Context资源,见try-catch-finally部分的finally代码段,这是一种好的习惯。资源释放时如果释放了上级资源,下级资源将先被释放。如:释放了ctx,那么资源释放顺序将是rs,stmt,cnn,ctx。换句话说,如果释放了ctx,那么rs,stmt和cnn都将不可用了。
这里的释放资源只是将数据库连接返回连接池中,并不是把资源真正释放掉,见数据库连接池概述。
Datasource对象是由Tomcat提供的,因而需要使用JNDI来获得Datasouce
在Javax.naming 中提供了Context接口,
数据源的配置涉及到Server.xml和web.xml,需要在server.xml中加入如下内容:说明一下:我的数据库是MYsql
type="javax.sql.DataSource"/>
\\数据源的名称
usernameroot数据库的名称
passwordpassword数据库密码
driverClassName
org.gjt.mm.mysql.Driver\\要加载的驱动
url
jdbc:mysql://172.20.0.73/rk?\\要连接的URL
具体还有一些详细的选项例如:MaxActive等,参加Server.xml中说明
另外在Web.xml中加入如下内容:
test connection\\描述
jdbc/testDB\\名称与上对应
javax.sql.DataSource\\与上对应
Container\\与上一置