Name jdbc is not bound in this Context

问题描述:

Name jdbc is not bound in this Context
tomcat的conf\catalina\localhost配置samples.xml
eclipse的samples工程里名为ConnPool的servlet
package servlet;
import java.sql.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ConnPool
*/
public class ConnPool extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
response.setCharacterEncoding("GB2312");
PrintWriter out=response.getWriter();
try
{
javax.naming.Context ctx=new javax.naming.InitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource) ctx.lookup("java:/comp/env/jdbc/jdbcdemo");
Connection conn=ds.getConnection();
PreparedStatement pstmt=conn.prepareStatement("select * from t_books");
ResultSet rs=pstmt.executeQuery();
StringBuilder table=new StringBuilder();
table.append("

");
table.append("");
while(rs.next())
{
table.append("");
}
table.append("
书名 作者
"+rs.getString("name")+" ");
table.append(rs.getString("author")+"
");
out.println(table.toString());
pstmt.close();
}
catch(Exception e)
{
out.println(e.getMessage());
}
out.flush();
out.close();
}
}.
为什么会这样呢?

在web.xml中配置如下:<resource-ref><res-ref-name>数据库名</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth>{...