解压版tomcat中,jsp文件使用了相对路径操作就会报错

guolin 2009-10-23 06:44:51
以前使用的安装版的tomcat,jsp文件里使用相对路径时一切正常,后来用了解压版的tomcat,把以前的jsp代码拿过来用,只要是有路径操作的地方全部都会报错,把相对路径改为绝对路径之后就能正常运行了。

请问这是怎么一回事?是不是解压版的tomcat还需要配置什么东西才可以读取相对路径,谢谢
...全文
202 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
guolin 2009-10-24
我又用了一个输出流语句进行测试,发现了问题所在
FileWriter fw=new FileWriter("sp.txt");
结果最后生成sp.txt的地方竟然是tomcat的bin文件夹里,根目录的位置变了,这是为什么呢?可不可以改回原来根目录的地址?
回复
guolin 2009-10-24
没有啊,我的相对路径名是正确的啊,在以前安装版的tomcat里可以正常运行的,项目的路径也没有问题,就是还一直报错。提示这个错误:
org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

jsp里面路径的一句是这么写的:
String url="jdbc:odbc:Driver={MicroSoft Access Driver(*.mdb)};DBQ=webapps/test/db1.mdb";

db1.mdb这个文件是存在的,就是提示找不到,换成绝对路径就可以正常运行,这是为什么?
回复
若鱼1919 2009-10-24
参考:深入体验java web 开发内幕-核心基础,第212页
简单说的说就是相对路径是相对于谁的问题,解压版是相对于start.bat.
所以,可以换用:
(1)getServletContext().getResourceAsStream("/WEB-INF/aa.txt");
ServletContext可以从整个Web应用中找到文件,/代表web应用根目录
(2)getClass().getResourceAsStream("/aa.txt");
这是从classpath中查找文件,所以aa.txt的位置应该是在:/WEB-INF/classes/aa.txt
(3)还可以用java.util.ResourceBundle类的getBundle()方法
ResourceBundle rb = ResourceBundle.getBundle("com.sdkd.config");
位置是:/WEB-INF/classes/com/sdkd/config.properties
回复
一洽 2009-10-23
肯定是写错了 不要加domain的名称 和/(前面)
回复
水中影子 2009-10-23
不是啊,我一直用绿色的tomcat,首先确定你项目的路径是否正确,重新在绿色tomcat部署一次,看看有没有错误
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2009-10-23 06:44
社区公告
暂无公告