重定向(重要)!!

简介: 重定向(重要)!!

重定向解决方案

1.工作原理

假设此时OneServlet是用户第一次访问的内部资源地址,TwoServlet是重定向访问的地址,下面来介绍一下过程:


用户第一次通过【手动方式】通知浏览器访问OneServlet。OneServlet工作完毕后,将TwoServlet地址写入到http响应协议包中的响应头中的location属性中,同时Tomcat也将302状态码写入到状态行(状态行在http响应协议包中),302代表通知浏览器本次返回的不是一个资源文件内容,而是一个资源文件地址,需要浏览器根据这个请求来索要这个资源文件。


在浏览器接收到响应包之后,会读取到302状态。此时浏览器自动根据响应头中location属性地址发起第二次请求,访问TwoServlet去完成请求中剩余任务


2.实现方式

response.sendRedirect("请求地址")


3.特征

(1)请求地址

既可以把当前网站内部的资源文件地址发送给浏览器 (格式:/网站名/资源文件名),也可以把其他网站资源文件地址发送给浏览器(格式:http://ip地址:端口号/网站名/资源文件名)


下面来看下代码示例:

情况一:我们想将当前网站内部的资源文件地址发送给浏览器:此时运用重定向方法可以实现,注意myweb是我们发布项目时的名称,two为访问TwoServlet时我们所设置的请求别名。

public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("/myweb/two");
    }
}

此时我们是想告诉浏览器第二次自动访问我们的TwoServlet,因为是通过地址栏通知浏览器发起下一次请求,因此通过重定向解决方案调用的资源文件接收的请求方式一定是【GET】


流程图:


2.png


情况二:


访问某个其他网站资源文件地址,例如此时我们访问的是百度,下面请看代码示例:

public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("http://www.baidu.com");
    }
}

当浏览器从http响应协议包中的响应头中的location属性获取到我们的百度地址后,便自动向我们的百度发起二次请求。


(2)请求次数

浏览器至少发送两次请求,但是只有第一次请求是用户手动发送。后续请求都是浏览器自动发送的。


(3) 请求方式

重定向解决方案中,通过地址栏通知浏览器发起下一次请求,因此通过重定向解决方案调用的资源文件接收的请求方式一定是【GET】,因为如果没有指明请求方式的话,浏览器默认的请求方式都为【GET】.


(4)缺点

重定向解决方案需要在浏览器与服务器之间进行多次往返,大量时间消耗在往返次数上,增加用户等待服务时间


相关文章
|
7月前
重定向命令
重定向命令
48 0
|
存储 C++ iOS开发
C++中的I/O重定向
在 C 中,我们可以使用函数freopen()将现有的 FILE 指针重定向到另一个流。freopen() 的原型为
83 0
|
前端开发
请求转发与请求重定向
请求转发与请求重定向
276 0
请求转发与请求重定向
|
前端开发 Java
重定向与请求转发
介绍JavaWeb中的实现页面跳转的同卵双胞胎兄弟—重定向与请求转发以及代码实现流程
重定向与请求转发
|
搜索推荐
重定向响应
什么是重定向响应
|
Python
一日一技:怎么>重定向不过去了?
一日一技:怎么>重定向不过去了?
227 0
一日一技:怎么>重定向不过去了?
|
算法 网络协议 前端开发
重发和重定向有什么区别与重定向应用
重发和重定向有什么区别与重定向应用
213 0
重发和重定向有什么区别与重定向应用
关于重定向与请求转发中的路径问题
关于重定向与请求转发中的路径问题
|
搜索推荐 Linux Apache
301重定向是什么?301重定向怎么做?
页面永久性移走(301重定向)是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。 301永久重定向对SEO无任何不好的影响,而且网页A的的权重都会传达给网页B,对于搜索引擎优化、网站优化来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。
307 0
|
缓存 Shell