一个小项目实验 练习servlet的使用创建了一个连接数据库的属性文件jdbc.properties
内容如下#driver-class
driverclass=com.microsoft.sqlserver.jdbc.SQLServerDriver#MSSQL
url=jdbc:sqlserver://localhost:1433;databaseName=company
password=sa
username=sa
在数据访问层里 写了一个通用类CommonDao
public class CommonDao {

private static Logger logger = Logger.getLogger(CommonDao.class.getName());
// 得到 Connection 之前要初始化的数据
private static String url; private static String password; private static String username; private static String driverClass;
/////////////////////////////////////////////////////////////////// private static Connection conn; static {
Properties p = new Properties();
try {
p.load(new FileInputStream(new File(
"WebRoot/WEB-INF/jdbc.properties")));
} catch (IOException e) {
logger.error("jdbc文件读取错误! "+e.getMessage());
} // 初始化数据
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password"); driverClass = p.getProperty("driverclass");
// 初始化数据 结束
} public static Connection getConn() {
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
return conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
logger.error(e.getMessage());
return null;
}
}用一个main函数测试的时候 可以连接并且能够读取数据, 但是当用servlet调用dao层的具体方法时候就不能获得连接了。希望有人能帮忙分析一下 谢谢了 servlet的配置是正确的测试main函数
public static void main(String[] args) {
List<Product> list=null;
ProductDao biz=new ProductDaoImpl();
list=biz.findAllProducts();


for(int i=0;i<list.size();i++)
{
Product product=(Product)list.get(i);
System.out.println(product.getName()); 
}
}servlet内容如下public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
ProductDao biz=new ProductDaoImpl();
List<Product> list=biz.findAllProducts();
HttpSession session=request.getSession();
session.setAttribute("list", list);
response.sendRedirect("showProductList.jsp");
}

解决方案 »

  1.   

    错误提示是jdbc文件读取错误! WebRoot\WEB-INF\jdbc.properties (系统找不到指定的路径。)
      

  2.   

    路径错误了,你用绝对路径先试,好用了之后 
    你再用相对路径调一下,看看怎么写,你最好把jdbc.properties 配置文件放在src路径下,然后编译后它就直接在classes目录下了,这样就不用配路径了,直接写文件名就应该可以,具体你试试吧,思路是这样地
    然后搞定你的问题
      

  3.   

    我觉得吧。
    你在Main中测试没有经过Tomcat,所以能够找到你写的webROOT/WEB-INF/..
    但是当你的程序部署到Tomcat以后,webROOT/WEB-INF/..这个目录是没有的。
    根目录下就是WEB-INF,所以我觉得你应该用这个路径,/WEB-INF/jdbc.properties
      

  4.   

    new File("WebRoot/WEB-INF/jdbc.properties"); 
    这个有问题
      

  5.   

    WebRoot/WEB-INF/下面别发读取的东西,因为这个安全级别高,建一个和WEB-INF并行的文件夹用来存放.