response vs request对象
文章目录
- 从一个例子说起
- 它的作用就是:
- 详细拆解
- 常见用法场景
- 小拓展
- response vs request
- 1. 先搞懂两个对象的身份
- **request = 请求(浏览器 → 服务器)**
- **response = 响应(服务器 → 浏览器)**
- 2. 跳转是谁发给谁?
- 3. 为什么不能用 request?
- 4. 最形象的比喻
- 5. 再看两个跳转,全都是 response
- **服务器告诉浏览器要跳转**
从一个例子说起
response.setHeader("refresh","3;url=login.jsp");它的作用就是:
让浏览器等待 3 秒,然后自动跳转到 login.jsp 页面。
详细拆解
refresh:告诉浏览器“我要定时刷新/跳转”3:等待3 秒再执行跳转url=login.jsp:3 秒后跳去哪个页面
常见用法场景
- 登录失败:
账号或密码错误,3秒后返回登录页 - 登出成功:
已退出登录,3秒后返回登录页 - 操作成功:
添加成功,2秒后返回列表页
小拓展
- 想立刻跳转(0 秒):
response.setHeader("refresh","0;url=login.jsp"); - 跳转前可以先输出提示文字,用户体验更好:
out.println("账号或密码错误!");response.setHeader("refresh","3;url=login.jsp");
response vs request
1. 先搞懂两个对象的身份
request = 请求(浏览器 → 服务器)
- 浏览器发给服务器的包裹
- 里面装的是:账号、密码、参数、Cookie
- 方向:浏览器 → 服务器
- 它是**“送来的包裹”**
response = 响应(服务器 → 浏览器)
- 服务器回复给浏览器的包裹
- 里面装的是:HTML、状态码、跳转指令、Cookie
- 方向:服务器 → 浏览器
- 它是**“返回的指令”**
2. 跳转是谁发给谁?
跳转指令 = 服务器告诉浏览器:“你3秒后去别的页面”
这是服务器对浏览器的命令,所以必须放在response里。
response.setHeader("refresh","3;url=login.jsp");意思就是:
服务器 → 响应头 → 浏览器:等3秒,跳转到登录页。
3. 为什么不能用 request?
因为request 是浏览器发给服务器的,不是服务器发给浏览器的!
你如果写:
request.setHeader...❌ 错误就等于:
浏览器告诉服务器:我等会儿跳走
这完全逻辑颠倒!
4. 最形象的比喻
- request = 学生交作业(浏览器→服务器)
- response = 老师批改作业(服务器→浏览器)
setHeader("refresh")相当于:
老师对学生说:你3秒后离开教室
→ 这是老师的指令,必须写在response(老师的回复)里!
5. 再看两个跳转,全都是 response
response.sendRedirect("xxx");// 立即跳转response.setHeader("refresh","3;url=xxx");// 延时跳转两个跳转,全都是 response 调用!
因为跳转永远是:
服务器告诉浏览器要跳转
- request:浏览器 → 服务器(只能拿数据,不能跳转)
- response:服务器 → 浏览器(才能输出、跳转、设置头)
所以跳转必须用 response,绝对不能用 request!
