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

  • 相关阅读:
    攻城狮在路上(肆)How tomcat works(一) 简单的web服务器
    攻城狮在路上(肆)How tomcat works(零) 前言说明
    font-face使用备忘
    subversion安装使用
    判断一个类到底是从哪个jar包中调用的工具类
    JavaScript实例
    Nginx(一)
    PHP面向对象(七)
    PHP面向对象(六)
    PHP面向对象(五)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/5484121.html
Copyright © 2020-2023  润新知