<a href=" <%=request.getContextPath%>/test.jsp">link:test.jsp </a> 

解决方案 »

  1.   

    修改一下server.xml文件,添加一个context并将docBase设置到你的web应用路径就可以了,(我没有试过,猜测就是重新配置一个虚拟目录而已)
      

  2.   

    我靠,CSDN居然,有重复提交的问题我刚才提交文章的时候,卡了一下,居然变成提交2篇文章啦。
      

  3.   

    将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; 

      

  4.   

    第二个方法显然是从第一个方法中的前部分抽取出来的,所以懒得去添加相关注释 :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 方法专门干这事 
      

  5.   

    这个有问题么?
    为什么不用相对路径?这样写:
    <a href="test.jsp">link:test.jsp </a>