简介
服务端和客户端跳转本质上都是将用户对某个页面的请求转移到另一个页面上,只不过其实现方式不同。下面会详细分析其实现方式!
在Http协议中的跳转状态
- 客户端跳转
客户端跳转分为301和302.
301 是永久跳转,302是临时跳转。
301 和 302 对于用户来讲没有任何区别,只对搜索引擎有意义,这里就不展开讲了。 - 服务端跳转
服务端跳转是发生在服务端内部的,用户端并无察觉,因此响应客户端的状态仍然是200
客户端跳转
客户端跳转的整体流程:
- 客户端 发送对某个页面请求到服务端
- 服务端 收到请求,发现该页面需要进行客户端跳转,于是给客户端发送如下响应头: HTTP/1.1 302 Found \r\n Location: url ; Location字段表示客户端需要跳转到的页面url。
- 客户端 (一般是浏览器)收到响应,取出 Location 字段中需要跳转的url,然后继续向服务端请求该url对应的页面。
下面是一个客户端跳转的流示意图,希望能够帮你更好的理解!
服务端跳转
服务端跳转的整体流程:
- 客户端 发送对某个页面请求到服务端
- 服务端 收到请求,发现该页面需要进行服务端跳转,于是便停止对该页面的请求,修改客户端提交的URI变成需要跳转页面的URI。在服务器内部重新对新的URI进行一次响应,并向客户端返回该响应内容。
-
客户端 收到响应,显示响应内容
下面是同样一个服务端跳转的示意图,希望能够帮你更好的理解!
进行服务端跳转的页面之间可以携带参数进行跳转
JavaWeb中客户端和服务端跳转的实现方式
- 客户端跳转:response.senRedirect(url)
- 服务端跳转:request.getRequestDispatcher(url).forward(request, response);
- 携带参数的方式: request.setAttribute(“key”, “value”);
- 取出参数的方式: request.getAttribute(“key”);
说在后头:
- 创作不易,如果觉得本篇博客对你有帮助,还请点个赞鼓励一下!
- 本账号会不断更新更多关于后端方面的知识,如果你有兴趣,请关注作者和作者一起在技术方面成长!