日期:2014-05-17  浏览次数:20677 次

再次问及<base href="<%=basePath%>">路径改变的问题
Java code

//jsp路径为<%=basePath%>data/test.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    //out.println("ok");如果在这里输出,基路径会变为<%=basePath%>data/,所以找不到图片,1
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

//out.println("ok");如果在这里输出,基路径也会变为<%=basePath%>data/,所以也找不到图片,2
<base href="<%=basePath%>">
//out.println("ok");如果在这里输出,基路径为<%=basePath%>,这样就找得到图片,3

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
    <img src="images/1.gif" width="14" height="14"> //图片路径<%=basePath%>images/1.gif
</body>
</html>



之前我也问过这个问题,我想这样再问一次,希望大家提意见。
像代码注释上所说的,在第1种和第2种情况下,基路径会变为<%=basePath%>data/;此时图片的URL为<%=basePath%>data/images/1.gif,URL错了,所以找不到图片。而第3种情况,基路径为<%=basePath%>,正常;此时图片的URL为<%=basePath%>images/1.gif,URL正确,所以找得到图片。请问,为什么在不同地方输出字符串时,他的基路径会有可能变成加上jsp前的data这个目录呢?
我很用心地问这个问题,想很久了,很多方法都用了,先谢谢大家先了。。。

------解决方案--------------------
个人感觉 <head>后面加了ok后。破坏正常html正常解析
导致下面这几不起作用了。
<base href="<%=basePath%>">
------解决方案--------------------
探讨
嗯,我试了,确实和浏览器有关,用ie就不能,我用360极速浏览器就行了

引用:

LZ可以做个纯HTML试一下,应该也是那样。这个浏览器的解析有关。

------解决方案--------------------
建议LZ在做页面的时候少用IE,尽量用Chrome浏览器,也许你会发现,同样的代码,在后者打开是正确的,在前者却会出现各种问题··看了你的代码,我也测试了一下,我用IE,360IE,Chrome都跑了一下·
的确是浏览器的问题·