jsp之重定向和转发理解
2015-03-30 00:21
337 查看
在讨论之前,我们必须了解http协议是一种无状态的协议,即浏览器和服务器之间的请求结束后再服务器上不会有任何的客户端信息。深入说的话这个和网络链接有关,在此不多讨论。
很重要的一点是重定向和转发,重定向的使用response.sendRedirect("地址");服务器转发的使用 request.getRequestDispatcher("地址").forward(request, response);两者的区别很大的,例如:重定向访问页面地址显示的是最终地址,
而且不可以向后传递参数,但是可以跳到外部站点. 然而服务器转发的话页面地址显示的是第一次请求的页面,而且可以向后传递参数,不能跳转到外部站点。造成这些不同点是因为重定向向服务器发出了两次请求,而转发则只发了一次请求。但是为什么请求不同就会造成这些差别呢,我喜欢从底层去了解这些原因,假设通过重定向去访问一个页面的一个超链接,这个时候在底层发生的操作如下:一开始客户端向服务器发出请求访问第一个页面,把用户的参数传递过去,然而,当点击此超链接的时候,服务器要求客户端重新的发出一次请求到超链接所在的页面,所以用户的参数为null,然而服务器转发的原理是,服务器冲客户端接收到一个用户信息,当用户去点击超链接的时候(假设是超链接),服务器会访问超链接里面的页面,由于对于客户端而言是一次请求,故能传参,这也很好解析了为什么重定向访问能跳转到外部站点,因为它是一次全新的请求。当然,在实际开发中,用哪种方式访问服务器还是开实际需要而定的.
很重要的一点是重定向和转发,重定向的使用response.sendRedirect("地址");服务器转发的使用 request.getRequestDispatcher("地址").forward(request, response);两者的区别很大的,例如:重定向访问页面地址显示的是最终地址,
而且不可以向后传递参数,但是可以跳到外部站点. 然而服务器转发的话页面地址显示的是第一次请求的页面,而且可以向后传递参数,不能跳转到外部站点。造成这些不同点是因为重定向向服务器发出了两次请求,而转发则只发了一次请求。但是为什么请求不同就会造成这些差别呢,我喜欢从底层去了解这些原因,假设通过重定向去访问一个页面的一个超链接,这个时候在底层发生的操作如下:一开始客户端向服务器发出请求访问第一个页面,把用户的参数传递过去,然而,当点击此超链接的时候,服务器要求客户端重新的发出一次请求到超链接所在的页面,所以用户的参数为null,然而服务器转发的原理是,服务器冲客户端接收到一个用户信息,当用户去点击超链接的时候(假设是超链接),服务器会访问超链接里面的页面,由于对于客户端而言是一次请求,故能传参,这也很好解析了为什么重定向访问能跳转到外部站点,因为它是一次全新的请求。当然,在实际开发中,用哪种方式访问服务器还是开实际需要而定的.
相关文章推荐
- 深入理解Servlet/JSP之“转发和重定向”
- jsp重定向与转发的理解和区别
- 深入理解Servlet/JSP之“转发和重定向”
- jsp学习之——关于请求转发和重定向的形象理解
- 深入理解Servlet/JSP之“转发和重定向
- jsp servlet 的 请求转发和重定向
- jsp servlet框架参数传递及控制器转发,重定向代码
- jsp中的重定向与转发
- jsp reuest转发,response重定向 以及pageContext对forward和include的简写
- JSP基础:三、重定向,转发详解
- JSP/Servlet转发与重定向的区别
- 项目____SSH框架jsp-action映射、传参、重定向再理解
- jsp/servlet中重定向和转发的区别
- #HTTP协议学习# (十二)理解转发与重定向
- 深入理解Servlet转发和重定向
- jsp - redirect重定向 / forward转发
- JSP中转发和重定向的区别
- 【JSP开发】response重定向和resquest转发
- jsp的基本语法——请求转发和重定向
- jsp 中重定向与请求转发的区别