java 如何实现页面之间跳转浏览器地址栏URL不变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何实现页面之间跳转浏览器地址栏URL不变相关的知识,希望对你有一定的参考价值。
url没有变化是因为这个跳转是在服务器内部跳转的。我简单说下浏览器的工作原理。浏览器发出一个地址请求到服务器,服务器根据这个地址找到相应的页面资料返回给浏览器,最后浏览器将信息显示给用户。
但服务器内部跳转的时候,对浏览器来说是不知道的,它只负责把服务器返回的信息显示出来。
在java web里
servlet的doGet或doPost中用response.sendRedirect("重定向的地址");
在jsp中也可以用response.sendRedirect("重定向的地址");
jsp中还可以使用特定的标签来重定向。 参考技术A 服务器端转发,即服务器端forward到下一个页面,共用一个request,url不改变
详细可百度
redirect和forward的区别 参考技术B url没有变化是因为这个跳转是在服务器内部跳转的。
Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?
【中文标题】Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?【英文标题】:How does Facebook change the URL in the browser's address bar without page reload or use of # or? 【发布时间】:2011-10-11 06:17:18 【问题描述】:几个月前,我在 vkontakte.ru(俄罗斯 FB)上看到了一项新功能: 在用户页面之间移动时,不会发生浏览器重新加载。相反,新页面会被预加载,然后显示。页面上的音乐播放器(固定在页脚顶部)会不间断地播放。
但是,浏览器地址栏中的 url 会发生变化,而不是通过哈希标记或查询字符串。
所以,我的页面是 vk.com/myPage... 我点击一个朋友,他的页面预加载,然后显示在浏览器地址栏中的 URL 更改为 vk.com/myfriendJoe 时,不会发生浏览器重新加载.
请注意,它仅适用于最新版本的浏览器,如更高版本的 Safari 和 Chrome,对于其他浏览器,如 Firefox 3.6,它实现了使用主题标签和查询字符串的后备。
我做了一些研究,发现了window.history.pushState
,但它似乎只适用于查询字符串。
任何想法将不胜感激。谢谢。
【问题讨论】:
spoiledmilk.dk/blog/… 【参考方案1】:如果您使用的是兼容 HTML5 的现代浏览器,则可以使用 history.pushState()
API。
更多:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
【讨论】:
【参考方案2】:网站是否在后台使用 ajax 调用来用新内容重新填充页面的某些部分?这是不更改网址的一种方式。
【讨论】:
【参考方案3】:这就是 HTML5 定义的新 history API。你可以看到另一个演示here。你说得对,是 pushState
做到了,但它不只适用于查询字符串(如该页面所示,它使用像 /history/first
和 /history/second
这样的有根相对 URL )。
【讨论】:
以上是关于java 如何实现页面之间跳转浏览器地址栏URL不变的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?