转发和重定向区别
程序员文章站
2022-06-10 13:42:21
...
转发和重定向区别
转发
转发发生在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
- 页面跳转
request.getRequestDispatcher("/目标-pattern").forward(request,respone);
使用forward跳转时,实在服务器内部跳转,地址栏不会发生变化,属于同一次请求
- 数据传递
forward表示一次请求,实在服务器内部跳转,可以共享一次request作用域中的数据
- request作用域:拥有存储数据的空间,作用范围是一次请求有效(一次请求可以经过多次转发)
- 可以将数据存入request后,在一次请求过程中的任何位置进行获取
-可传递任何数据(基本数据、对象、数组、集合等)- 存数据:request.setAttribute(key,value);
- 以键值对形式存储在request作用域中·。key为String类型,value为Object类型
- 取数据:request.getAttribuute(key);
- 通过String类型的key访问Object类型的value
转发特点
- 转发是服务器行为
- 转发是服务器只做了一次访问请求
- 转发浏览器地址不变
- 转发两次跳转之间传输的信息1不会丢失,所以可以通过request进行数据的传递
- 转发只能将请求发送给同一个Web应用中的组件
重定向
重定向作用在客户端,客户端将请求发送给服务端后,服务端响应给客户端一个新的请求地址,客户端重新发送新请求
- 页面跳转
respone.sendRedirect("目标URL");
- URL:统一资源标识符,用来表示服务器中定位一个资源,资源在web项目中的路径
- 使用redirect跳转时,是在客户端跳转,地址栏发送改变,属于多次请求
数据传递
sendRedirect跳转时,地址栏发送改变,代表客户端重新发送请求
- respone没有作用域,两次request请求中的数据无法共享
传递数据:通过URL的拼接进行数据传递("/WebProject/b?username=tom");
-获取数据:request.getParameter(“username”);
重定向特点
- 重定向是客户端行为
- 重定向是浏览器至少做了两次两次访问请求
- 重定向浏览器地址栏改变
- 重定向两次跳转之间传输的信息会丢失(request范围)
- 重定向可以指定任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源
总结:当两个Servlet需要传递数据时,选择forward转发,不建议使用sendRedirect进行传递
下一篇: 帝国cms灵动标签调用归档信息汇总
推荐阅读
-
js parentElement和offsetParent之间的区别_javascript技巧
-
php include和require的区别深入解析
-
CSS的link和@import的区别_html/css_WEB-ITnose
-
javascript中函数定义以及声明和表达式区别实例详解
-
windows 2003 server php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
-
indexOf和lastIndexOf的区别
-
PHP中单引号和双引号的区别,php引号双引号_PHP教程
-
JavaScript操作DOM元素的childNodes和children区别_javascript技巧
-
request(域对象)和response的区别和用法
-
详细分析mybatis中resultType和resultMap的区别与联系