问题背景
以前写response.sendRedirect("/login.jsp");是成功的,今天用到ajax请求,发送给后台,希望直接跳转,发现无效,首先要深入了解ajax请求和response.sendRedirect的机制
response.sendRedirect的机制
这种方式是在客户端作的重定向处理。该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的URLs。如果传递到该方法的参数是一个相对的URL,那么Web container在将它发送到客户端前会把它转换成一个绝对的
forward
这种方式是在服务器端作的重定向。
服务器往client发送数据的过程是这样的:
• 服务器在 向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给client端。什么时候将缓冲区里的数据发送给client端呢?
• (1)当对来自client的request处理完,并把所有数据输出到缓冲区,
• (2)当缓冲区满,
• (3)在程序中调用缓冲区的输出方法out.flush()或 response.flushbuffer(),web container才将缓冲区中的数据发送给client。
这种重定向方式是利用服务器端的缓冲区机制,在把缓冲区的数据发送到客户端之前,原来的数据不发送,将执行转向重定向页面,发送重定向页面的数据,