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?

Vue.js中跳转报错 地址栏改变 页面不改变

Java Web开发 - 将浏览器地址栏中的 Request 参数显示成中文

java获取浏览器地址栏地址

forward内部跳转 和redirect重定向跳转的区别

<a>标签地址栏跳转带中文参数,地址栏中文怎么没有被编码?