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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。