一个关于移植程序从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了,真郁闷,哪位大虾给看看这个问题改怎么办?