文章目录
- 什么是重定向
- 重定向流程演示图
- 如何重定向
- 注意的问题
- 重定向的特点
- 重定向演示
什么是重定向
服务器向浏览器发送一个状态码 302 及一个消息头 location,浏览器收到后,会立即向 location 所指向的地址发送请求。
重定向流程演示图
(1)用户在浏览器提交 form 表单,通过 add 到服务器找到 AddEmp
(2)AddEmp 向数据库中插入一条数据
(3)AddEmp 返回给用户一个消息头 location = list(ListEmp 的地址)和 302 状态码,当浏览器碰到状态码 302 后,浏览器会自动向新地址发请求
(4)浏览器自动通过 list 找到 ListEmp
(5)ListEmp 到数据库中查询数据并返回给浏览器
如何重定向
response.sendRedirect(String url);
其中,url 是重定向的地址。
注意的问题
-
重定向之前,不能够有
out.close()
或者out.flush()
操作。为什么?重定向的内容需要写入到response
对象中,必须用到out
对象,所以不能在重定向之前不能把out
关闭掉。方法flush()
会把 out 对象的数据全部写入到response
对象后,再关闭out
。 -
重定向之前,如果
response
对象缓存有数据,则这些数据会被清空。 -
在重定向代码后写输出语句会不会执行?
会执行。JVM 将顺序执行代码,除非遇到return
或System.exit();
重定向的特点
- 重定向的地址是任意的
- 重定向之后,浏览器地址栏的地址变成了
location
所指定的地址。
重定向演示
执行结果
1)IDE 开启 TCP/IP Monitor,浏览器访问http://localhost:8080/web03/addEmp.html
,文本框输入信息,点击“确定”提交表单数据
2))页面直接跳转到 http://localhost:8080/web03/list
3)TCP/IP Monitor 显示