Servlet重定向和请求转发的区别

Servlet 请求转发和重定向的区别


先看看怎么实现的

// 1、容器内请求转发
request.getRequestDispatcher("url").forward(request,response);

// 2、浏览器重定向
response.sendRedirect("url");

共同点:

  1. 都可以产生页面跳转。

不同点:

  1. url的变化

    • 请求转发不会发生 url 的改变。
    • 重定向的 url 会发生变化。
  2. 数据传递:

    • 请求转发可以携带数据
    • 重定向不能携带数据
  3. 路径问题:

    • 相对路径:没有区别
    • 绝对路径:
      • 请求转发是在容器内部进行转发的。也就是说在当前web项目下,所以根目录就是 当前项目 /index.jsp 或者 /servlet/LoginServlet 既可以。
      • 重定向是服务器向浏览器发送一个 response 响应,然后浏览器重新请求服务器,此时是来自服务器外部的请求,根目录就是当前服务器的根目录 webapp ,所以就要带上 当前 module 的项目名称 如:/webserviceModule/servlet/LoginServlet 或者 /webserviceModule/index.jsp

可以通过两个示意图来进行分析:

  1. 请求转发示意图:

  2. 浏览器重定向示意图:

    执行顺序:1----->2 -----> 断开连接 -----> 3 -----> 4。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章