关于网站开发中连接的可移植性总结
网络主机地址http://localhost:8080/
1. 相对于根目录的连接,形如: "/another.jsp"
/DIR/目录下的
<a href="/another.jsp">Link</a>
<html:link href="/another.jsp">Link</html:link>
<html:link page="/another.jsp">Link</html:link>
在默认ROOT应用中,分别连接到地址:
http://localhost:8080/another.jsp
http://localhost:8080/another.jsp
http://localhost:8080/another.jsp
在应用test中,分别连接到地址:
http://localhost:8080/another.jsp
http://localhost:8080/another.jsp
http://localhost:8080/test/another.jsp
2. 相对于当前目录的连接,形如: "./another.jsp" 或 "another.jsp"
/DIR/目录下的
<a href="./another.jsp">Link</a>
<html:link href="./another.jsp">Link</html:link>
<html:link page="./another.jsp">Link</html:link>
在默认ROOT应用中,都分别连接到地址:
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
在应用test中,分别连接到地址:
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
http://localhost:8080/test./another.jsp 错误连接(而且与DIR无关,都连接到此地址)
/DIR/目录下的
<a href="another.jsp">Link</a>
<html:link href="another.jsp">Link</html:link>
<html:link page="another.jsp">Link</html:link>
在默认ROOT应用中,都分别连接到地址:
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
在应用test中,分别连接到地址:
http://localhost:8080//DIR/another.jsp
http://localhost:8080//DIR/another.jsp
http://localhost:8080/testanother.jsp 错误连接(而且与DIR无关,都连接到此地址)
3总结
由于在网站开发时经常不使用默认的WEB应用,而可能把一个模块开发成一个WEb应用(可能多人合作),
但是在发布的时候要把所有模块发布为一个WEB应用,并通常是默认的WEB应用,为了使URL不依赖于Web应用
和是否是默认WEB应用,建议如下
a.对于相对于WEB应用根目录的连接,形如: "/another.jsp"
使用<html:link page="/..">Link </html:link>
b.对于相对于当前目录的连接,形如: "./another.jsp" 或 "another.jsp"
使用<html:link href="./another.jsp">Link </html:link>
<a href="./another.jsp">Link </a>或
<html:link href="another.jsp">Link </html:link>
<a href="another.jsp">Link </a>
不要使用<html:link page="./another.jsp">Link </html:link>
<html:link page="another.jsp">Link </html:link> 此二者不可移植
c.建议使用struts的html标签库<html:link..标签,因为当用户关闭Cookie时会自动重写URL,所以概括
两句话:相对应用根目录用<html:link page="/.."
相对当前的目录用<html:link href="./XXXXX.jsp" 或 <html:link href="XXXXX.jsp"
4.补充
还有一个标签<html:link forward="forwardname"> Link </html:link> 上面没有提到,现做以说明。
forward属性和struts配置文件<global-forwards>中的一个<forward>元素匹配,不能和<action>中<forward>匹配。
例子:<global-forwards>
<forward name="forwardname" path="//another.jsp"/>
</global-forwards>
<html:link forward="forwardname"> Link </html:link>
相当于<html:link page="//another.jsp"> Link </html:link>
需要注意的是:<global-forwards>中<forward>的path要使用相对于WEB应用的根目录路径,包括<action>中也是。
在struts1.1多应用模块时<html:link forwad. 有时不好使,不知道为什么????(好像是模块切换状态
不对)所以最好不用。
替代方法;
网页中用连接
<html:link page="/forwardaction.do">forward</html:link>
在action-mapping配置如下action
<action path="/forwardaction" forward="/index.jsp" />
posted on 2006-02-06 20:58
java小记 阅读(207)
评论(0) 编辑 收藏