一个关于移植程序从tomcat4.1到tomcat5.0所碰到的怪问题,来者有分!!!

金豆豆老爹 2003-12-28 08:25:34
最进我把一个在tomcat4.1运行良好的应用移植到tomcat5.0下,结果发现了问题。
经过调试发现有一个函数getClass().getResource("").getPath()返回的字符串在
tomcat4.1和tomcat5.0下不一样。
例如:在tomcat4.0下这个函数返回路径:
/F:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/callcenter/WEB-INF/classes/common/opdatabase/"
在tomcat5.0下返回为:
/F:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.0/webapps/callcenter/WEB-INF/classes/common/opdatabase/"
我很奇怪,因为他们用的是一样的jvm。
说详细点:
我自己些个类:
package test;
public class testPath
{
public String getPath()
{
return(getClass().getResource("").getPath();
}
}
把这个类编译好放到web-inf/class/test目录下。
然后写个测试页面:
test.jsp
<%@ page language = "java" contentType="text/html;charset=gb2312" %>
<jsp:useBean id="test" scope="page" class="test.testPath"></jsp:useBean>
<%
out.println(test.getPath());
%>
假如你的tomcat路径里面含有空格(比如:F:/Program Files/Apache Software Foundation/Tomcat 5.0),那么这个页面在tomcat4.1和tomcat5.0下结果是有区别的,就是我最上面所说的区别。
这个问题我没有办法解决,我只好想办法把带有“%20”字符串转化为带" "的啦,
于是我又写了个函数:
public String transformTab(String str)
{
StringTokenizer st = new StringTokenizer(str,"%20");
String temp="";
while(st.hasMoreTokens())
{
temp+=st.nextToken()+" ";
}
return temp.trim();
}
可这个函数在转化:
"F:/Program%20Files/Tomcat%205.0/webapps/"时候得到的结果居然是:
"F:/Program Files/Tomcat 5. /webapps/"。
原来它把0也当成%20了,真郁闷,哪位大虾给看看这个问题改怎么办?
...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuzhe 2003-12-29
  • 打赏
  • 举报
回复
能不能用java.net.URLDecoder类的decode()方法来对返回的路径解码啊,照返回的字符串来看,好像是经过URLEncoder的编码的
gong1 2003-12-29
  • 打赏
  • 举报
回复
正常吧,没什么问题。
^_^。
zhaoqy0416 2003-12-29
  • 打赏
  • 举报
回复
关注~~~~~~~~~~~~
寒冬 2003-12-28
  • 打赏
  • 举报
回复
我还没用tomcat5不知道他和tomcat4有什么不同,以后肯定会用的,先关注一下。
金豆豆老爹 2003-12-28
  • 打赏
  • 举报
回复
刚才说错了一点,最后:“原来它把0也当成%20”应改为:
原来它把/前面的0也当成%20了,
所以转化:tomcat%205.0/webapps的时候会得到:tomcat 5. /webapps,
不光如此:转化tomcat%205.0000/webapps 和 tomcat%205.0000000000/webapps的时候都会得到tomcat 5. /webapps.

81,092

社区成员

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

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