jsp之重定向和转发理解

来源:互联网 发布:人工智能程序的维护 编辑:程序博客网 时间:2024/04/30 11:33

在讨论之前,我们必须了解http协议是一种无状态的协议,即浏览器和服务器之间的请求结束后再服务器上不会有任何的客户端信息。深入说的话这个和网络链接有关,在此不多讨论。

很重要的一点是重定向和转发,重定向的使用response.sendRedirect("地址");服务器转发的使用  request.getRequestDispatcher("地址").forward(request, response);两者的区别很大的,例如:重定向访问页面地址显示的是最终地址,

而且不可以向后传递参数,但是可以跳到外部站点. 然而服务器转发的话页面地址显示的是第一次请求的页面,而且可以向后传递参数,不能跳转到外部站点。造成这些不同点是因为重定向向服务器发出了两次请求,而转发则只发了一次请求。但是为什么请求不同就会造成这些差别呢,我喜欢从底层去了解这些原因,假设通过重定向去访问一个页面的一个超链接,这个时候在底层发生的操作如下:一开始客户端向服务器发出请求访问第一个页面,把用户的参数传递过去,然而,当点击此超链接的时候,服务器要求客户端重新的发出一次请求到超链接所在的页面,所以用户的参数为null,然而服务器转发的原理是,服务器冲客户端接收到一个用户信息,当用户去点击超链接的时候(假设是超链接),服务器会访问超链接里面的页面,由于对于客户端而言是一次请求,故能传参,这也很好解析了为什么重定向访问能跳转到外部站点,因为它是一次全新的请求。当然,在实际开发中,用哪种方式访问服务器还是开实际需要而定的.

0 0
原创粉丝点击