当前位置: 代码迷 >> Java Web开发 >> jsp 通过 javabean 链接 access 的相对路径如何设置呀?
  详细解决方案

jsp 通过 javabean 链接 access 的相对路径如何设置呀?

热度:656   发布时间:2016-04-17 00:19:25.0
jsp 通过 javabean 链接 access 的相对路径怎么设置呀??

在eclipse下我的工程名是Myweb, 
 Myweb/webcontent下放的是jsp文件,
 Myweb/database下放的是access数据库文件


我在DBConnAccess()写的
  try {
dbpath=URLDecoder.decode(this.getClass().getResource("/").getPath()
+"database/mymuesli.mdb ","gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  

报错:


org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

急需解决

------解决方案--------------------
你这样写需要把mdb文件放到Myweb/WEB-INF/classes/database/下
------解决方案--------------------
补充一下,安全的做法是:
1、mdb文件放到classpath下(通常是WEB-INF/classes)
2、程序中用dbpath=URLDecoder.decode(this.getClass().getResource("/database/mymuesli.mdb").getPath(),"gb2312"); 

getResource("/")只能返回ClassPath中的一个路径(ClassPath是可以设置N多路径的),
通过隔天Resource("/")+相对路径,也是不能保证找到的。

------解决方案--------------------
把mdb文件放到Myweb/WEB-INF/classes/database/下
------解决方案--------------------
引用楼主 liujiaqiid 的帖子:

在eclipse下我的工程名是Myweb,
Myweb/webcontent下放的是jsp文件,
Myweb/database下放的是access数据库文件


我在DBConnAccess()写的
try {
dbpath=URLDecoder.decode(this.getClass().getResource("/").getPath()
+"database/mymuesli.mdb ","gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


报错:


------解决方案--------------------
看不懂!我也是新手啊!
------解决方案--------------------
System.out.println(this.getClass().getResource("/").getPath()+"database/mymuesli.mdb);

看你的输出路径是什么,然后将相应的文件,放到合适的目录。。。。
------解决方案--------------------
额,能够把你的工程发布到独立容器下再测试吗?
或者根据错误提示,把你的数据库放到那个位置。
------解决方案--------------------
用这种方法来吧,但这个要配置一下 
accessdriver = "sun.jdbc.odbc.JdbcOdbcDriver";
accessURL = "jdbc:odbc:数据库名";

------解决方案--------------------
因为这个问题涉及到机器环境,所以我没法告诉你放在哪里就一定可以,
用绝对路径肯定不是办法。

我再说一下java寻找资源的方式:
我们都知道java依赖于CLASSPATH这个参数的配置来加载类,那么通过getResource()方法加载一个资源也是遵循同样的道理,
CLASSPATH代表多个目录或者jar,
而getResource("/path/any.file")
这个方法的第一个“/”就代表CLASSPATH的所有目录,在CLASSPATH所指定的任意目录下,有path子目录下有any.file,
则返回这个资源(文件)的URL.

一般如果我们手工运行一个java main程序,我们通常自己设置classpath或者使用操作系统的环境变量设置classpath,
而在web容易中,以tomcat为例:
classpath之一在webapp/youProject/WEB-INF/classes目录下。


所以,我要求你的WAR包中,数据库文件放在 WEB-INF/classes/database/mymuesli.mdb
那么,你可以通过如下代码:
Java code
URL dbUrl=Class.class.getResource("/a.jpg");//("/database/mymuesli.mdb");         File dbFile=new File(dbUrl.getFile());         String dbpath = dbFile.getAbsolutePath();
  相关解决方案