JavaWeb第二讲 重定向与转发 & doGet()与doPost()
时间:2022-07-25
本文章向大家介绍JavaWeb第二讲 重定向与转发 & doGet()与doPost(),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
重定向与转发 & doGet()与doPost()
(一)重定向与转发
转发(服务器行为)
request.getRequestDispatcher("url").forward(request, response);
重定向(客户端行为)
response.sendRedirect("url");
- 地址栏区别
Forward是服务器请求资源,服务器直接访问目标地址的url,把那个url的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以地址栏不变。
Redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。Redirect利用服务器返回的状态码实现。客户端浏览器请求服务器时,服务器会返回一个状态码。服务器通过setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。
2. 数据共享区别
Forward:转发页面和转发到的页面可以共享request里面的数据。 Redirect:不能共享数据。
3. 应用区别
Forward:一般用于用户登陆的时候,根据角色转发到相应的模块. Redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等
4. 从效率来说
Forward:高。 Redirect:低。因为浏览器至少提交了两次请求。
(二)doGet()与doPost()
- get是用来从服务器上获取数据,而post是用来向服务器传递数据;
- get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者用" ? “连接,变量之间用” & "连接;而post是将表单中的数据放在form的数据体中,按照变量与值对应的方式,传递到action属性所指定的URL。
- get是不安全的,因为在传输过程中,数据是被放在请求的URL中,对用户可见;而post的所有操作对用户来说都是不可见的。
- get传输的数据量小,这主要应为受url长度限制,通常在1024字节左右;而post可以传输大量的数据,所有上传文件只能用post提交。
- get限制form表单的数据集必须为ASCII字符;而post支持整个IS01-0646字符集。
- get是form表单的默认方法。
- iOS引入JavaScriptCore引擎框架(一)
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(三)搭建步骤
- iOS引入JavaScriptCore引擎框架(二)
- Java基础-03(01).总结运算符、键盘录入、if语句
- 使用git恢复未提交的误删数据
- Java web图片上传和文件上传
- 通过java程序模拟实现地铁票价2+2=12(r3笔记第94天)
- 由objC运行时所想到的。。。
- tensorflow系列笔记:流程,概念和代码解析
- node实现watcher的困境
- Java基础-03(02).总结运算符、键盘录入、if语句
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录
- python数据分析师面试题选
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 技术译文 | MySQL 8.x DDL 和查询重写插件
- iOS webp图片展示处理
- Android内存优化 | LeakCanary/Profiler & 非静态内部类耗时操作 实战分析
- 使用keycloak实现k8s用户权限的统一管理
- python魔法方法是什么
- 如何同步上游分支代码?
- 在 Pycharm 中安装及使用 Jupyter (图文详解)
- 【经验分享】如何使用keras进行多主机分布式训练
- 分享一种接口的日志格式
- Python 基础(二):基本语句
- javaScript代码飘红报错看不懂?读完这篇文章再试试!
- Synchronized简述
- PythonforResearch | 2_数据处理
- 程序员过关斩将--Http请求中如何保持状态?
- 如何有效恢复误删的HDFS文件