[Java][Web] Servlet中转发和重定向比较

Servlet中页面跳转的两种方式

请求转发

使用requestDispatcher对象

request.getRequestDispatcher("path").forward(request, response);

使用JSP动做元素

<jsp:forward page="/">

请求重定向

使用response的sendRedirect方法

response.sendRedirect("path");

请求转发与请求重定向的区别

  1. 转发是在服务器内部完成,是服务器内部的跳转;重定向是在客户端完成,是客户端的跳转。
RequestDispatcher.forward方法在服务器内部请求转发给另一个资源,浏览器只知道发出去了请求并获得结果,但不知道请求在服务器内部的转发。
HttpServletResponse.sendRedirect方法是服务端接收了客户端的请求,并返回给客户端结果,这个结果是告诉客户端去请求另一个资源,而且当前会话关闭,所以客户端会跳转到另一个解面。
  1. 转发地址栏不会改变;重定向地址栏会改变。
  2. 因为转发是在服务器内部进行的,所以转发只能转发给同一个WEB项目范围内的资源;而重定向能够指定任何地方。
  3. 因为转发是在服务器内部进行,转发先后服务器内部共享同一个request和response对象;而重定向先后分别对应不一样的request和response对象。
相关文章
相关标签/搜索