JAVA的一个小问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA的一个小问题相关的知识,希望对你有一定的参考价值。

-text 【web项目名】
- src 【src文件夹】
-com.company.struts.util 【第1个包】
+DbUtil.java 【此包下的类】
+UpLoadUtil.java 【此包下的类】
-com.company.struts.action 【第2个包】
-com.company.struts.po 【第3个包】
db.properties 【一篇property文件】

在DbUtil这个类中,要读取 db.properties文件的内容,代码如下:
Properties pro = new Properties();
pro.load(new FileInputStream("/src/db.properties"));

总是说:\src\db.properties (系统找不到指定的路径)
那这个路径该如何写呢?
db.properties这篇文件是直接放在项目下的, pro.load(new FileInputStream("src/db.properties")); 这样写在此类的main方法测试中确实可以访问,这个文件里主要是放连接数据库链接的URL那些,但是在Tomcat下,随便访问个login.jsp,读数据库的东西,又找不到 db.properties 文件了,读取不到里面的数据库连接

参考技术A private PoolManager()
try
// 声明配置文件类 准备加载
Properties settings = new Properties();
/* jdbc驱动名称 */
String driverManager = "";
/* 数据库连接地址 */
String url = "";

/* 数据库用户名称 */
String username = "";

/* 登陆密码 */
String password = "";
try
// 得到配置文件的路径
String path = this.getClass().getResource("").getPath();
// 将%20替换成空格
path = path.replaceAll("%20", " ");
// 加载文件
settings.load(new FileInputStream(path + "/db.properties"));
// settings.load(new FileInputStream("D:\\Tomcat
// 5.0\\webapps\\ccfishery\\WEB-INF\\classes\\com\\ccut\\common\\db\\db.properties"));

// settings.load(new
// FileInputStream("/com/ccut/common/db/db.properties"));

driverManager = settings.getProperty("dataBase.driverManager");

url = settings.getProperty("dataBase.url");

username = settings.getProperty("dataBase.userName");

password = settings.getProperty("dataBase.passWord");
//System.out.println(url);
catch (FileNotFoundException e)
log.info("没有找到驱动文件");
e.printStackTrace();
catch (IOException e)
log.info("读取文件出错了");
e.printStackTrace();

// 初始化数据库连接池对象
BasicDataSource dataSource = new BasicDataSource();
// 设置驱动名称
dataSource.setDriverClassName(driverManager);
// 设置地址
dataSource.setUrl(url);
// 设置用户名
dataSource.setUsername(username);
// 设置密码
dataSource.setPassword(password);
// 设置自动提交为false
dataSource.setDefaultAutoCommit(false);
// 设置最大活动数
dataSource.setMaxActive(300);
dataSource.setMaxIdle(30);
dataSource.setMaxWait(5000);

ds = dataSource;

catch (Exception e)
e.printStackTrace();



这是我的数据库连接方式
参考技术B text 【web项目名】
- src 【src文件夹】
-com.company.struts.util 【第1个包】
+DbUtil.java 【此包下的类】
+UpLoadUtil.java 【此包下的类】
-com.company.struts.action 【第2个包】
-com.company.struts.po 【第3个包】
db.properties 【一篇property文件】//直接放在项目下,不用放在src下

Properties pro = new Properties();
pro.load(new FileInputStream("db.properties"));

这样写就可以了

或者这样也应该可以吧------------------------------------
-text 【web项目名】
- src 【src文件夹】
-com.company.struts.util 【第1个包】
+DbUtil.java 【此包下的类】
+UpLoadUtil.java 【此包下的类】
-com.company.struts.action 【第2个包】
-com.company.struts.po 【第3个包】
db.properties 【一篇property文件】

在DbUtil这个类中,要读取 db.properties文件的内容,代码如下:
Properties pro = new Properties();
pro.load(new FileInputStream("src/db.properties")); //src前不要反斜杠
参考技术C 总是说:\src\db.properties (系统找不到指定的路径)
根据tomCAT来说的话,它的默认项目是Root,但是你新建一个项目的话,那么访问的时候,路经一定不能按默认的ROOT项目那样去写。
简单点来说,找不到指定的路经就是因为你把它的最上层的文件夹去掉了,
正确路经是:text\src\db.properties本回答被提问者采纳
参考技术D 根路径下就不用写src了 第5个回答  2010-03-19 要用\\隔开才行!!

Java类的继承与方法调用的一个小问题

 1 public class Father {
 2 
 3     protected void server(int i){
 4         switch (i){
 5             case 1:
 6                 methodone();
 7                 break;
 8             case 2:
 9                 methodtwo();
10                 break;
11             case 3:
12                 methodthree();
13                 break;
14             default:
15                 System.out.println("error");
16         }
17 
18 
19 
20     }
21 
22     protected void methodthree() {
23         System.out.println("这是父类的方法三");
24     }
25 
26     protected void methodtwo() {
27         System.out.println("这是父类的方法二");
28     }
29 
30     protected void methodone() {
31         System.out.println("这是父类的方法一");
32     }
33 }
 1 public class Child extends Father {
 2 
 3     @Override
 4     protected void methodthree() {
 5         System.out.println("这是子类的方法三");
 6     }
 7 
 8     @Override
 9     protected void methodtwo() {
10         System.out.println("这是子类的方法二");
11     }
12 
13     @Override
14     protected void methodone() {
15         System.out.println("这是子类的方法一");
16     }
17 
18     @Override
19     protected void server(int i) {
20         super.server(i);
21     }
22 }
1 public class Test_main {
2     public static void main(String[] args){
3         Father fa=new Father();
4         Father ch=new Child();
5         fa.server(1);
6         ch.server(2);
7 
8     }
9 }

  在学习servlet的过程中突然对类方法的调用关系犯了糊涂,所谓基础不牢,地动山摇,一个小问题足以搞得我模模糊糊。在类的继承中,子类继承父类的某个方法,若这个方法中含有对父类的另一个方法(如method1,method2,method3)的调用,当子类不重载此方法(如method1,method2,method3)时,编译器会自动调用父类的相应的方法;当子类重载此方法(如method1,method2,method3)时,编译器会自动调用子类重载的方法。

  换句话说,子类继承父类方法时只是继承了相应的代码,父类调用子类的实例时会接着调用子类重载的方法,方法没有被子类重载时才会调用父类本来的方法。

以上是关于JAVA的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中的一个小问题

求教一个java的小问题。

java 小问题

jQuery 和 Java 小程序

java中使用枚举器遍历的一个小问题。

java String拼接时候的一个小问题