request.getRequestDispatcher()和response.sendRedirect()区别说明

乔欣 Java经验 发布时间:2023-02-27 13:59:09 阅读数:5359 1
下文笔者将通过request.getRequestDispatcher和response.sendRedirect简介讲述其区别,如下所示

request.getRequestDispatcher().forward(request,response)

1、属于转发,也是服务器跳转,相当于方法调用
       在执行当前文件的过程中转向执行目标文件
	    两个文件(当前文件和目标文件)属于同一次请求
		后页共用一个request
		可以通过此来传递一些数据或者session信息
		request.setAttribute()和request.getAttribute()

2、在前后两次执行后,地址栏不变,仍是当前文件的地址

3、不能转向到本web应用之外的页面和网站,所以转向的速度要快

4、URL中所包含的“/”表示应用程序(项目)的路径

response.sendRedirect()

1、属于重定向,也是客户端跳转
    相当于客户端向服务端发送请求之后
	 服务器返回一个响应
	 客户端接收到响应之后又向服务端发送一次请求
	 一共是2次请求
	 前后页不共用一个request
	 不能读取转向前通过request.setAttribute()设置的属性值

2、在前后两次执行后,地址栏发生改变,是目标文件的地址

3、可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢

4、URL种所包含的"/"表示根目录的路径

request.getRequestDispatcher()和response.sendRedirect()区别

区别1:调用方式

request.getRequestDispatcher(“test.jsp”).forward(request, response);//转发到test.jsp
response.sendRedirect(“test.jsp”);//重定向到test.jsp

在jsp页面中你也会看到通过下面的方式实现转发:
当然也可以在jsp页面中实现重定向:
<%response.sendRedirect("test.jsp");
   //重定向到test.jsp 
   %>

区别2:转发方式

  request.getRequestDispatcher(“test.jsp”).forward(request, response) 服务器端转发
  response.sendRedirect(“test.jsp”); 客户端转发

区别3:地址是否变化

  request.getRequestDispatcher(“test.jsp”).forward(request, response) 客户端地址不变
  response.sendRedirect(“test.jsp”); 客户端地址发生变化

区别4:可转发的位置不同

  request.getRequestDispatcher(“test.jsp”).forward(request, response):
      只能服务内部转发
  response.sendRedirect(“test.jsp”); 
      服务内部和外部都可以转发

区别5:请求次数不同

  request.getRequestDispatcher(“test.jsp”).forward(request, response):
      只产生一次request
  response.sendRedirect(“test.jsp”); 
      产生多次request
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16774793185931.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者