JavaWeb:Web组件之间的跳转方式

Web组件之间的跳转方式:

          方式1:请求转发(forward)

          方式2:URL重定向(redirect)

          方式3:请求包含(include)

请求转发:

           从Servlet1,请求转发到Servlet2。

           Servlet1完成一部分的功能,再调转到Servlet2,继续完成剩下的功能。

语法:

​​​​​​​request.getRequestDispather(String path).forward(request, response);

           参数:path,表示调转的目标的路径(资源的名称)。

           注意:不要忘记forward。

分析请求转发的特点:

       1. 浏览器地址栏不发生改变,依然是/forward/s1,不是目标地址(/forward/s2)。

       2. 请求转发只发送一次请求。

       3. 共享同一个请求中的数据。

       4. 最终响应给浏览器的由Servlet2来决定。

       5. 请求转发不能跨域访问,只能跳转到当前应用中的资源。

       6. 请求转发可以访问WEB-INF目录中的资源。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

URL重定向:

语法:       

response.sendRedirect(String url);

        参数:url,表示目标资源地址

分析URL重定向的特点:

       1:浏览器地址栏发生改变,从/redirect/s1,变成目标地址(/redirect/s2)。

       2:URL重定向发送了两次请求。

       3:因为URL重定向是两次独立的请求,所以不共享请求中的数据。

       4:最终响应给浏览器的由Servlet2来决定(把目标地址拷贝到浏览器地址栏,敲回车)。

       5:URL重定向能跨越访问,可以访问其他应用中的资源。

       6:URL重定向不能访问WEB-INF目录中的资源。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------​​​​​​​

请求包含:

       在一个页面中可以包含其他页面的内容。

       在Servlet中没意义,在JSP中有意义。

语法:

 request.getRequestDispatcher(String path).include(request, response);

请求转发和URL重定向都支持Web组件之间的跳转,如何选择?

        分析各自的特点。

        必须使用请求转发(forward):

               1):如果需要共享请求中的数据。

               2):如果需要访问WEB-INF中的资源。

         如果需要跨域访问,避免表单的重复提交,只能使用URL重定向。

         其他情况任选。

猜你喜欢

转载自blog.csdn.net/fashion_man/article/details/82666321