本文将以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能携带值

jsp取得java 返回值 jsp获取response返回值_java


如上图所示 , 重定向相当于我们的浏览器请求台服务器时 ,服务器无法响应 , 我们的浏览器就再去请求另外的服务器

请求转发 ,是我们的浏览器请求服务器 ,服务器无法响应但是会浏览器去请求另外的服务器 ,再有第一台服务器去返回数据给浏览器

使用场景 : 通过前台点击按钮查询用户信息,并将信息显示到页面 👉请求转发
注册失败提示跳转页面👉任意 ,因为无需显示信息

实现功能的API :
Request传值使用setAttribute(key , val) (以键值对的形式存入)与 getAttribute(key) (返回值的一个object对象)方法实现

Response 其实也可以传一些简单的值 ,如在地址栏通过URL传输
…(网址) ?username =123 & age=20 然后把上述网址写在sendRedirect(" 参数?username = 122 ")