本文将以JSP作为目的地梳理Request & Response的区别
书接上文 ,我们在前面好几篇前 ,提了一嘴action属性 ,它是表单数据提交的目的地 ,需要指定一个后台的服务位置, 如Servlet ,JSP
这里需要特别强调的是 ,我们一般不推荐使用JSP作为目的地,尽管它可以作为后台
一.Request
Request是JSP的内置对象 , 无需创建直接使用.
1.功能: HTTP请求对象 ,获取HTTP中的数据 ,并封装为一个对象
2.常用方法:
getParameter(name) ;获取数据 ,参数是form表单各input框的name值
out.print() / out.println() ;输出值,加ln的会在每个数据后接一个空格
setVharacterEncoding("UTF-8"); 设置编码方式
getParameterValues(name); *接受checkbox的值
注 : 1.在接受checkbox的值时 ,如果checkbox不写value属性,会造成后台只能接受的若干个on ,因此在写checkbox的时候,必须给出value属性
2.select框在定义的时候 ,也必须给出value属性 ,否则后台同样难以处理
3.前端代码是与用户交互的,必须要养成异常处理的好习惯
二.Response
1.功能: 与请求相反 ,它是响应的意思, 将响应的内容封装为对象 ,从服务器回到浏览器
2.主要方法sendRedirect()
重定向
三.二者区别(重点)
①使用Request跳转网页 :
使用到的是请求转发getRequestDispatcher(参数)
其中参数是目标网页
使用示例 :request.getRequestDispatcher(参数).forward(request ,response)
此时 ,地址栏不变,但是网页内容改变
②使用Response跳转网页
使用到的是重定向response.sendRedirect()
此时,地址栏改变为跳转后的页面,网页内容改变
③关于是否携带值
request跳转会携带值 , 而response不会
四.如何携带值?
接上文 ,先解释一下为什么request能携带值
如上图所示 , 重定向相当于我们的浏览器请求台服务器时 ,服务器无法响应 , 我们的浏览器就再去请求另外的服务器
而请求转发 ,是我们的浏览器请求服务器 ,服务器无法响应但是会帮浏览器去请求另外的服务器 ,再有第一台服务器去返回数据给浏览器
使用场景 : 通过前台点击按钮查询用户信息,并将信息显示到页面 👉请求转发
注册失败提示跳转页面👉任意 ,因为无需显示信息
实现功能的API :
Request传值使用setAttribute(key , val)
(以键值对的形式存入)与 getAttribute(key)
(返回值的一个object对象)方法实现
Response 其实也可以传一些简单的值 ,如在地址栏通过URL传输
…(网址) ?username =123 & age=20 然后把上述网址写在sendRedirect(" 参数?username = 122 ")
里