servlet访问数据库的一点问题

madmangt 2009-03-29 11:55:47
一个小项目实验 练习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");
}
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
himily198338 2009-03-30
  • 打赏
  • 举报
回复
路径错误了,你用绝对路径先试,好用了之后
你再用相对路径调一下,看看怎么写,你最好把jdbc.properties 配置文件放在src路径下,然后编译后它就直接在classes目录下了,这样就不用配路径了,直接写文件名就应该可以,具体你试试吧,思路是这样地
然后搞定你的问题
madmangt 2009-03-30
  • 打赏
  • 举报
回复
错误提示是

jdbc文件读取错误! WebRoot\WEB-INF\jdbc.properties (系统找不到指定的路径。)
jumpheightway 2009-03-30
  • 打赏
  • 举报
回复
p.load(new FileInputStream(new File(
"WebRoot/WEB-INF/jdbc.properties")));
这个当然不行

成都专业培训:JAVA J2EE JSP PHP LAMP系列架构
联系QQ:492236022
什么都不能 2009-03-30
  • 打赏
  • 举报
回复
new File("WebRoot/WEB-INF/jdbc.properties");
这个有问题
liang__ 2009-03-30
  • 打赏
  • 举报
回复
我觉得吧。
你在Main中测试没有经过Tomcat,所以能够找到你写的webROOT/WEB-INF/..
但是当你的程序部署到Tomcat以后,webROOT/WEB-INF/..这个目录是没有的。
根目录下就是WEB-INF,所以我觉得你应该用这个路径,/WEB-INF/jdbc.properties
Study_Work_2009 2009-03-30
  • 打赏
  • 举报
回复
up
csouyangjun 2009-03-30
  • 打赏
  • 举报
回复
楼上的说的有道理!
jinchun1234 2009-03-30
  • 打赏
  • 举报
回复
WebRoot/WEB-INF/下面别发读取的东西,因为这个安全级别高,建一个和WEB-INF并行的文件夹用来存放.

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧