精华内容
下载资源
问答
  • forward redirect 的区别?

    千次阅读 2019-06-26 10:17:55
    forward redirect 的区别? 浏览器 url 地址显示不同 服务端通过 forward 返回,浏览器 url 地址不会发生变化;服务器通过 redirect 返回,浏览器会重新请求, url 地址会发生变化 前后台两者页面跳转的处理...

    forward 和 redirect 的区别?

    • 浏览器 url 地址显示不同

    服务端通过 forward 返回,浏览器 url 地址不会发生变化;服务器通过 redirect 返回,浏览器会重新请求, url 地址会发生变化

     

    • 前后台两者页面跳转的处理方式不同

     forward 跳转页面,是服务端进行页面跳转加载(include)新页面,直接返回到浏览器;redirect 跳转页面,是服务端返回新的 url 地址,浏览器二次发出 url 请求

     

    • 参数携带情况不一样

    forward 跳转页面,会携带请求的参数到新的页面;redirect 跳转页面,属于一次全新的 http 请求,无法携带上一次请求的参数

     

    • http 请求次数不同

    forward 1次;redirect 2次

     

    基于 servlet 实现

    test servlet

    package constxiong;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * test servlet
     * @author ConstXiong
     * @date 2019-06-26 10:00:34
     */
    @WebServlet("/test")
    public class TestServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
        public TestServlet() {
        }
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.getWriter().write("This is test.");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    	}
    
    }
    

    请求返回

     

    redirect servlet

    package constxiong;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * redirect servlet
     * @author ConstXiong
     * @date 2019-06-26 10:00:34
     */
    @WebServlet("/redirect")
    public class RedirectServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
        public RedirectServlet() {
        }
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.sendRedirect("http://www.baidu.com");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    	}
    
    }
    

    请求返回

     

    forward servlet

    package constxiong;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * forward servlet
     * @author ConstXiong
     * @date 2019-06-26 10:00:34
     */
    @WebServlet("/forward")
    public class ForwardServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
        public ForwardServlet() {
        }
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.getRequestDispatcher("/test").forward(request, response);//forward 跳转到 test 请求
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    	}
    
    }
    

    请求返回

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • forward 和redirect的区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏...

    forward 和redirect的区别 ?

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

    展开全文
  • forward和 redirect的区别? forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来...

    forward和 redirect的区别?

     

    forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以
    session, request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward 方法,并且,这样也有助于隐臧实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect(方法。
     

     

     

     

     

     

    展开全文
  • Forward和Redirect的区别?

    2018-12-08 15:37:00
     Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。 直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request...

    【考点】

    • Forward转发请求的原理;
    • Redirect转发请求的原理。

    【分析】

      ForwardRedirect代表了两种请求转发方式:直接转发和间接转发。

    直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。

     

    间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

    间接请求转发(Redirect)

      间接转发方式,有时也叫重定向,它一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,

      Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用response对象的SendRedirect()方法,

      告诉浏览器重定向访问指定的URL,示例代码如下:

    1 ......
    2 //Servlet中处理get请求的方法
    3 public void doGet(HttpServletRequest request,HttpServletResponse response){
    4 //请求重定向到另外的资源
    5     response.sendRedirect("资源的URL");
    6 }
    7 ........

     

      图解:

        

    1. 浏览器向Servlet1发出访问请求;
    2. Servlet1调用sendRedirect()方法,将浏览器重定向到Servlet2;
    3. 浏览器向servlet2发出请求;
    4. 最终由Servlet2做出响应。
    5. 总结:请求对象已经改变了,不再是同一个请求对象。

     

    直接请求转发(Forward)

    一般说的请求转发指的就是直接转发方式。Web应用程序大多会有一个控制器。由控制器来控制请求应该转发给哪个信息资源。

    然后由这些信息资源处理请求,处理完以后还可能转发给另外的信息资源来返回给用户,这个过程就是我们常说的MVC模式。

     

    javax.serlvet.RequestDispatcher接口是请求转发器必须实现的接口,由Web容器为Servlet提供实现该接口的对象,

    通过调用该接口的forward()方法到达请求转发的目的,示例代码如下:

     

    1 ......
    2     //Servlet里处理get请求的方法
    3  public void doGet(HttpServletRequest request , HttpServletResponse response){
    4      //获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置
    5    RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL");
    6     //调用forward()方法,转发请求      
    7    requestDispatcher.forward(request,response);    
    8 }
    9 ......

       图解:

        

    1. 浏览器向Servlet1发出访问请求;
    2. Servlet1调用forward()方法,在服务器端将请求转发给Servlet2;
    3. 最终由Servlet2做出响应。
    4. 总结:其实,通过浏览器就可以观察到服务器端使用了那种请求转发方式,当单击某一个超链接时,浏览器的地址栏会出现当前请求的地址,
    5. 如果服务器端响应完成以后,发现地址栏的地址变了,则证明是间接的请求转发。相反,如果地址没有发生变化,则代表的是直接请求转发或者没有转发。

     

      直接转发和间接转发的原理及区别是什么?

     

      Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。

     

      分别是RequestDispatcher类的forward()方法和HttpServletRequest类的sendRedirect()方法。

      对于间接方式,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。

     

      对于直接方式,客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。

     

    转载于:https://www.cnblogs.com/lhy-549/p/10087866.html

    展开全文
  • 服务器直接访问目标地址URL,将URL内容响应给浏览器,浏览器接收服务器发送过来内容,但不知道这个内容(资源)来源,所以当请求方式是forward时,浏览器地址栏不会发生改变;forward是一次请求一次响应。 ...
  • forward是服务器请求资源,服务器直接访问目标地址URL,把那个URL响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送内容从哪里来,所以它地址栏还是原来地址. redirect是服务端...
  • forward 是容器中控制权转向,是服务器请求资源,服务器直接访问目标 地址 URL,把那个 URL 响应内容读取过来,然后把这些内容再发给浏览器, 浏览器根本不知道服务器发送内容是从哪儿来,所以它...
  • 也就是说,客户端服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问某个 HTML 或其他类型 Web 页中包含有其他 Web 资源(如:JavaScript 文件、图像文件、CSS 文件等)...
  • forward和redirect的区别? forward 重定向: 1,重定向会改变浏览器地址栏地址 2,重定向不止可以访问服务器内的资源,还可以访问外部连接 3重定向因为是两次请求,所以重定向不能使用request来访问资源和共享数据,...
  • forward和redirect的区别是什么?

    万次阅读 多人点赞 2018-05-19 16:28:31
    forward和redirect是什么?是servlet种的两种主要的跳转方式。forward又叫转发,redirect叫做重定向。两者的区别总结:1.从地址栏显示来说:1)forword是服务器内部的重定向,服务器直接访问目标地址的 url网址,把...
  • forward和redirect是什么? 是servlet种两种主要跳转方式。forward又叫转发,redirect叫做重定向。 forward是服务器内部重定向,服务器直接访问目标地址URL,把那个URL响应内容读取出来,而客户端并不知道...
  • 题目:下面有关forward和redirect的描述,正确的是() ?A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求B.执行forward时,浏览器不知道服务器发送的内容是从何处来,...
  • 两者的区别总结: 从地址栏显示来说: 1)forword是服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的...
  • forward 和redirect的区别?  forward仅是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,在客户端浏览器地址栏中不会显示出...
  • forward和redirect的区别

    千次阅读 2019-01-23 10:53:54
    forward和redirect的区别? 重定向redirect: 转发forward: 区别 forward和redirect的区别? 答:Forward和Redirect代表了两种请求转发方式:重定向和转发。对应到代码里,分别是RequestDispatcher类的 ...
  • redirect和forward: redirect方式相当于“response.sendRedirect()”,转发后浏览器地址栏变为重定向后地址,不共享之前请求数据。 forward方式相当于“request.getRequestDispatcher().forward(request,...
  •  RequestDispatcher.forward()方法HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果你需要在下一个...
  • 1.forward在跳转后可以取到message值,redirect在跳转后无法取到message值。 2.forward跳转后地址栏URL不会改变,而redirect会改变。 转载于:https://www.cnblogs.com/itxinke/p/7282606.html...
  • RequestDispatcher.forward()方法HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果你需要在下一个...
  • 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址URL,把那个URL响应内容...forward:转发页面转发到页面可以共享request里面数据. redirect:不能共享数据. 3.从运用地方来说 forward:
  • 根据转发方式不同,可以区分为直接请求转发(Forward)间接请求转发(Redirect),那么这两种转发方式有何区别呢?本文将由我跟大家分享一下。一、从定义上看forward是服务器请求资源,服务器直接访问目标地址URL...
  • 根据转发方式不同,可以区分为直接请求转发(Forward)间接请求转发(Redirect),那么这两种转发方式有何区别呢?本文将由千锋广州Java培训老师跟大家分享一下。一、从定义上看:forward是服务器请求资源,服务器...
  • forword和redirect的区别?

    2008-06-13 17:44:00
    <jsp:forward:从一个页面转到另为一个页面,可以利用request来转递参数,因为他们request没有变,在同一个请求内。 response.sednRedirect;就不同了,当用它转到另为一个面页时,它是等于重新发出了一个请求,...
  • forward (转发)服务器直接访问目标地址URL,把那个URL 响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送内容是从哪儿来,所以它地址栏中还是原来地址。 redirect就是服务器...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 316
精华内容 126
关键字:

forward和redirect的区别?