request.getRequestDispatcher()和response.sendRedirect()区别说明
下文笔者将通过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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


