zoukankan      html  css  js  c++  java
  • Java Servlet(九):转发请求与重定向请求区别

    转发:

    <%
            pageContext.setAttribute("pageContextAttr", "pageContextAttribute");
            request.setAttribute("requestAttr", "requestAttribute");
            session.setAttribute("sessionAttr", "sessionAttribute");
            application.setAttribute("applicationAttr", "applicationAttribute");
        %>
    
        pageContext:<%=pageContext.getAttribute("pageContextAttr")%><br />
        request:<%=request.getAttribute("requestAttr")%><br /> 
        session:<%=session.getAttribute("sessionAttr")%><br />
        application:<%=application.getAttribute("applicationAttr")%><br />
    
        <%
            String servletName = "myELServletPage.jsp";
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("/" + servletName);
            requestDispatcher.forward(request, response);
            // 1、 重定向 "/"代表当前web站点的根目录
            //  转发:“/”代表当期web应用的 根目录。
            // 2、转发:只能转发到当前web应用的资源;
            //   重定向:可以重定向到任何资源(包括外部资源)。 
        %>

    重定向:

    <%
            pageContext.setAttribute("pageContextAttr", "pageContextAttribute");
            request.setAttribute("requestAttr", "requestAttribute");
            session.setAttribute("sessionAttr", "sessionAttribute");
            application.setAttribute("applicationAttr", "applicationAttribute");
        %>
    
        pageContext:<%=pageContext.getAttribute("pageContextAttr")%><br />
        request:<%=request.getAttribute("requestAttr")%><br /> 
        session:<%=session.getAttribute("sessionAttr")%><br />
        application:<%=application.getAttribute("applicationAttr")%><br />
    
        <%
            // 1、 重定向 "/"代表当前web站点的根目录
            //  转发:“/”代表当期web应用的 根目录。
            response.sendRedirect("myRedirectPage.jsp");
            
            // 2、转发:只能转发到当前web应用的资源;
            //   重定向:可以重定向到任何资源(包括外部资源)。 
        %>

    myELServletPage.jsp与myRedirectPage.jsp内容都相同:

        pageContext:<%= pageContext.getAttribute("pageContextAttr") %><br/>
        request:<%= request.getAttribute("requestAttr") %><br/>    
        session:<%= session.getAttribute("sessionAttr") %><br/>
        application:<%= application.getAttribute("applicationAttr") %><br/>        

    当访问转发页面时,结果是:

    当访重定向页面时,结果是:

    转发与从定向区别:

    1、用法却别:

    重定向请求:1、调用HttpServletRequest 的getRequestDispatcher()的方法,获取RequestDispatcher对象, 调用getRequestDispatcher()需要传入转发的地址。

                    2、调用HttpServletRequest的forward(request,response)方法。

    转发请求:调用HttpServletResponse对象的sendRedirect()方法,直接在sendRedirect()方法中传入要转发的目标地址。

    2、重定向请求: "/"代表当前web站点的根目录;
         转发请求:“/”代表当期web应用的 根目录。

    3、重定向请求:可以重定向到任何资源(包括外部资源);

         转发请求:只能转发到当前web应用的资源。

    4、重定向请求:只发送了一个次请求。浏览器地址不发送变化。

        转发请求:发送了两次请求。浏览器地址发送变化。

    5、转化请求:目的页面可以接受该页面传递的参数信息。在最终的Servlet中,request对象和中转的那个request是同一个对象。
        重定向请求:在最终的Servlet中,request对象和中转的那个request不是同一个对象。

  • 相关阅读:
    INV*更新物料信息
    WPF设置样式的几种方式
    使用InternetGetConnectedState判断本地网络状态(C#举例)
    WinInet API详解
    WPF导航总结
    WPF中的命令与命令绑定导航
    WPF依赖属性相关博客导航
    关于WPF自定义控件(导航)
    WPF送走控件的focus方法
    MvvmLight学习篇—— Mvvm Light Toolkit for wpf/silverlight系列(导航)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/5484121.html
Copyright © 2011-2022 走看看