日期:2014-05-20  浏览次数:20704 次

关于tomcat项目下,js如果用url的相对路径的问题
假设项目的路径如下:
http://localhost:8080/project1/

当前页面 http://localhost:8080/project1/test/test1.jsp


我要在test1.jsp页面中用js 修改document.href.location属性为test2/test1.jsp
我的写法如下: document.href.location="/project1/test2/test2.jsp"
以上写法是可以的,但缺点是必须写死 /project1 这相根目录,当我的项目改名为project2 的时候,所有相关的js都要修改. 
所以,我的问题是,js 能否用相对路径访问project1/test2/test.jsp? 
我尝试过的做法: document.href.location="/test2/test2.jsp" 或 document.href.location="../test2/test2.jsp" 都不行,提示找不到这个url





------解决方案--------------------
Java code

   request.getContextPath()+路径

------解决方案--------------------
探讨
Java code
request.getContextPath()+路径

------解决方案--------------------
Java code

request.getContextPath()+"/test2/test2.jsp"

------解决方案--------------------
确实挺麻烦的,我试了也不行
这样可以
JScript code

<script type="text/javascript">
    var pathname=window.location.pathname;
    var arr=pathname.split("/");
    var proName=arr[1];
    window.location.href="/"+proName+"/test2/test2.jsp";
</script>

------解决方案--------------------
没解决掉的话,你可以用这种方法:在js里做个action,让它到action里处理
var url = "***.do?method=abc"

------解决方案--------------------
有一种偷巧的办法:

你在JSP文件里面定义一个全局变量,比如 var baselocation;
<script language="javascript">
var baselocation='<%=request.getContextPath()%>';
</script>
后面你就可以用它了


------解决方案--------------------
探讨
有一种偷巧的办法:

你在JSP文件里面定义一个全局变量,比如 var baselocation;
<script language="javascript">
var baselocation=' <%=request.getContextPath()%>';
</script>
后面你就可以用它了