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不是同一个对象。

  • 相关阅读:
    集成信鸽推送!!!
    URI跳转方式地图导航的代码实践
    CocoaPods 的详细使用教程
    学习如何学习
    代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
    宏!!!!(拷贝别人的博客的只为了收藏)
    不修改Xcode项目加载Reveal
    关于开发中的常用手段(个人建议)
    ios高级-属性中Copy的使用
    iOS高级-RunLooper
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/5484121.html
Copyright © 2011-2022 走看看