如何通过服务器在 jsp 网页中创建可移植 url
How to create portable urls in jsp webpages over servers
我正在将我的网站移至新服务器,原始服务器位于 header 和页脚中的 http://www.jthink.net , the new one is temporarily at https://test.jthink.net this has exposed the fact that my webpages have http://www.jthink.net 硬代码。
网站主要有jsp个页面,建议移到相关链接,但是这样不行,因为header每个页面都有
<%@ include file="/layout/inc/pagestart.jsp" %>
并且网页的层数可能不同,因此如果它们共享 header 相对路径,则仅适用于文件夹结构层数相同的页面。
http://www.jthink.net/songkong/en/index.jsp
http://www.jthink.net/songkong/index.jsp
所以我需要使用绝对链接而不是将其硬编码为 www.jthink.net 或 test.jthink.net 这样我就可以在其中任何一个上使用相同的页面。
所以我尝试了
<link rel="icon" href="<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />
但是解决了
<link rel="icon" href="test.jthink.net/songkong/images/songkong32.png" type="image/png" />
没用
于是我尝试了
<link rel="icon" href="https://<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />
但这是对 https 的硬编码,因此无法在现有站点上运行。
请问正确的做法是什么?
解决方案是使用 服务器相关链接 ,如果 url 以单个 / 开头,解析为当前服务器的协议和名称
例如
如果在页面 http://www.example.net/index.jsp 上,/ 的 url 表示 http ://www.example.net/,而如果在页面 https://www.example.net/index.jsp / 的 url 表示 https://www.example.net/
我认为注意这里与相对链接的区别很重要,因为它很混乱。之前有人建议我使用相对链接,但我认为相对链接是以 ..(意思是父目录)或 . 开头的链接(意思是当前目录)和 unix 一样,这些不好,因为根据你在服务器
中所在的页面,可以获得不同的结果
例如
如果在第 http://www.example.net/index.jsp a url of .. would mean http://www.example.net/, whereas if on page http://www.example.net/test/index.jsp a url of .. would mean http://www.example.net/test
页上
我正在将我的网站移至新服务器,原始服务器位于 header 和页脚中的 http://www.jthink.net , the new one is temporarily at https://test.jthink.net this has exposed the fact that my webpages have http://www.jthink.net 硬代码。
网站主要有jsp个页面,建议移到相关链接,但是这样不行,因为header每个页面都有
<%@ include file="/layout/inc/pagestart.jsp" %>
并且网页的层数可能不同,因此如果它们共享 header 相对路径,则仅适用于文件夹结构层数相同的页面。
http://www.jthink.net/songkong/en/index.jsp
http://www.jthink.net/songkong/index.jsp
所以我需要使用绝对链接而不是将其硬编码为 www.jthink.net 或 test.jthink.net 这样我就可以在其中任何一个上使用相同的页面。
所以我尝试了
<link rel="icon" href="<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />
但是解决了
<link rel="icon" href="test.jthink.net/songkong/images/songkong32.png" type="image/png" />
没用
于是我尝试了
<link rel="icon" href="https://<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />
但这是对 https 的硬编码,因此无法在现有站点上运行。
请问正确的做法是什么?
解决方案是使用 服务器相关链接 ,如果 url 以单个 / 开头,解析为当前服务器的协议和名称
例如 如果在页面 http://www.example.net/index.jsp 上,/ 的 url 表示 http ://www.example.net/,而如果在页面 https://www.example.net/index.jsp / 的 url 表示 https://www.example.net/
我认为注意这里与相对链接的区别很重要,因为它很混乱。之前有人建议我使用相对链接,但我认为相对链接是以 ..(意思是父目录)或 . 开头的链接(意思是当前目录)和 unix 一样,这些不好,因为根据你在服务器
中所在的页面,可以获得不同的结果例如
如果在第 http://www.example.net/index.jsp a url of .. would mean http://www.example.net/, whereas if on page http://www.example.net/test/index.jsp a url of .. would mean http://www.example.net/test
页上