请求转发和URL重定向区别

来源:互联网 发布:scx 3406w 网络设置 编辑:程序博客网 时间:2024/06/07 01:22

      首先介绍下Servlet之间的交互,Servlet和Servlet之间可以共享信息并且可以相互跳转.一个完整的操作,需要AServlet执行一部分操作,然后再交给BServlet继续完成.常用的有请求转发(forward)和URL重定向(redirect).

请求转发(forward):

      AServlet操作完毕之后,请求转发到BServlet,继续完成余下的功能.

     语法: request对象.getRequestDispatcher(String path).forward(request,response);

     特点:

           1.浏览器地址栏路径没变,依然是AServlet的资源名称.

           2.只发送了一个请求.

           3.共享同一个请求,在请求中共享数据.

           4.最后的响应输出由BServlet来决定.

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

           6.可以访问WEB-INF中的资源.

URL重定向(redirect):

       AServlet操作完毕之后,重定向到BServlet,继续完成余下的功能.

       语法:response对象.sendRedirect(String path);

       特点:

            1.浏览器地址栏发生变化,变成BServlet的资源名称.

            2.发送两个请求.

            3.因为是不同的请求,所以不能共享请求中的数据.

            4.最终的响应输出由BServlet来决定.

            5.可以跨域访问资源.

            6.不可以访问WEB-INF中的资源.

请求转发和重定向的选择?

       1.若需要共享请求中的数据,只能使用请求转发.

       2.若需要访问WEB-INF中的资源,只能使用请求转发.

       3.若需要跨域访问,只能使用URL重定向.

       4.请求转发可能造成表单的重复提交问题.

       5.其他时候,任选.

 

    

    

原创粉丝点击