Tomcat的路径问题哦~~~ <a href=" <%=request.getContextPath%>/test.jsp">link:test.jsp </a> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 修改一下server.xml文件,添加一个context并将docBase设置到你的web应用路径就可以了,(我没有试过,猜测就是重新配置一个虚拟目录而已) 我靠,CSDN居然,有重复提交的问题我刚才提交文章的时候,卡了一下,居然变成提交2篇文章啦。 将Web站点下的绝对路径转换为虚拟路径: 两个将绝对路径转换为虚拟路径封装好的方法 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径 /**//// <summary> /// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径 /// </summary> /// <param name="page">当前页面指针,一般为this </param> /// <param name="specifiedPath">绝对路径 </param> /// <returns>虚拟路径, 型如: ../../ </returns> public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath) { // 根目录虚拟路径 string virtualPath = page.Request.ApplicationPath; // 根目录绝对路径 string pathRooted = HostingEnvironment.MapPath(virtualPath); // 页面虚拟路径 string pageVirtualPath = page.Request.Path; if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1) { throw new Exception(string.Format("\"{0}\"是虚拟路径而不是绝对路径!", specifiedPath)); } // 转换成相对路径 //(测试发现,pathRooted 在 VS2005 自带的服务器跟在IIS下根目录或者虚拟目录运行似乎不一样, // 有此地方后面会加"\", 有些则不会, 为保险起见判断一下) if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\") { specifiedPath = specifiedPath.Replace(pathRooted, "/"); } else { specifiedPath = specifiedPath.Replace(pathRooted, ""); } string relativePath = specifiedPath.Replace("\\", "/"); string[] pageNodes = pageVirtualPath.Split('/'); // 减去最后一个页面和前面一个 "" 值 int pageNodesCount = pageNodes.Length - 2; for (int i = 0; i < pageNodesCount; i++) { relativePath = "/.." + relativePath; } if (pageNodesCount > 0) { // 如果存在 ".." , 则把最前面的 "/" 去掉 relativePath = relativePath.Substring(1, relativePath.Length - 1); } return relativePath; } 第二个方法显然是从第一个方法中的前部分抽取出来的,所以懒得去添加相关注释 :P 将Web站点下的绝对路径转换为虚拟路径 /**//// <summary> /// 将Web站点下的绝对路径转换为虚拟路径 /// 注:非Web站点下的则不转换 /// </summary> /// <param name="page">当前页面指针,一般为this </param> /// <param name="specifiedPath">绝对路径 </param> /// <returns>虚拟路径, 型如: ~/ </returns> public static string ConvertSpecifiedPathToRelativePath(Page page, string specifiedPath) { string virtualPath = page.Request.ApplicationPath; string pathRooted = HostingEnvironment.MapPath(virtualPath); if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1) { return specifiedPath; } if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\") { specifiedPath = specifiedPath.Replace(pathRooted, "~/"); } else { specifiedPath = specifiedPath.Replace(pathRooted, "~"); } string relativePath = specifiedPath.Replace("\\", "/"); return relativePath; } 将虚拟路径转绝对路就没什么好说的了, HttpRequest.MapPath 方法专门干这事 这个有问题么?为什么不用相对路径?这样写:<a href="test.jsp">link:test.jsp </a> 问问大家做项目常遇到的八哥 哪位高手帮我解决一个定时器的问题 hibernate取sequence JBoss4.0.4中如何配置Oracle数据库连接池 请教各位J2EE开发高手些问题 紧急求助啊!有关与tomcat 5.0 关于weblogic默认根目录的问题,除了默认的那个外,还可以设置其他的目录吗? 在EJB中如何访问Sql Server 2000? 怎么让chrome支持VML或者有其他解决方案 S2SH框架 Struts2无法映射到action spring管理jms,connectionFactory为null 大家帮帮忙
两个将绝对路径转换为虚拟路径封装好的方法 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
/**//// <summary>
/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
/// </summary>
/// <param name="page">当前页面指针,一般为this </param>
/// <param name="specifiedPath">绝对路径 </param>
/// <returns>虚拟路径, 型如: ../../ </returns>
public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath)
{
// 根目录虚拟路径
string virtualPath = page.Request.ApplicationPath;
// 根目录绝对路径
string pathRooted = HostingEnvironment.MapPath(virtualPath);
// 页面虚拟路径
string pageVirtualPath = page.Request.Path; if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
{
throw new Exception(string.Format("\"{0}\"是虚拟路径而不是绝对路径!", specifiedPath));
} // 转换成相对路径
//(测试发现,pathRooted 在 VS2005 自带的服务器跟在IIS下根目录或者虚拟目录运行似乎不一样,
// 有此地方后面会加"\", 有些则不会, 为保险起见判断一下)
if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
{
specifiedPath = specifiedPath.Replace(pathRooted, "/");
}
else
{
specifiedPath = specifiedPath.Replace(pathRooted, "");
} string relativePath = specifiedPath.Replace("\\", "/"); string[] pageNodes = pageVirtualPath.Split('/'); // 减去最后一个页面和前面一个 "" 值
int pageNodesCount = pageNodes.Length - 2; for (int i = 0; i < pageNodesCount; i++)
{
relativePath = "/.." + relativePath;
} if (pageNodesCount > 0)
{
// 如果存在 ".." , 则把最前面的 "/" 去掉
relativePath = relativePath.Substring(1, relativePath.Length - 1);
} return relativePath;
}
将Web站点下的绝对路径转换为虚拟路径
/**//// <summary>
/// 将Web站点下的绝对路径转换为虚拟路径
/// 注:非Web站点下的则不转换
/// </summary>
/// <param name="page">当前页面指针,一般为this </param>
/// <param name="specifiedPath">绝对路径 </param>
/// <returns>虚拟路径, 型如: ~/ </returns>
public static string ConvertSpecifiedPathToRelativePath(Page page, string specifiedPath)
{
string virtualPath = page.Request.ApplicationPath; string pathRooted = HostingEnvironment.MapPath(virtualPath); if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
{
return specifiedPath;
} if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
{
specifiedPath = specifiedPath.Replace(pathRooted, "~/");
}
else
{
specifiedPath = specifiedPath.Replace(pathRooted, "~");
} string relativePath = specifiedPath.Replace("\\", "/");
return relativePath;
} 将虚拟路径转绝对路就没什么好说的了, HttpRequest.MapPath 方法专门干这事
为什么不用相对路径?这样写:
<a href="test.jsp">link:test.jsp </a>