浏览器是如何将用户数据发送到服务器的?( 二 )


3Request请求体

浏览器是如何将用户数据发送到服务器的?

文章插图
 
①getParameter()方法
parameter , 参数的意思 。get请求的请求体为空 , post请求参数需要从请求体中获取 。
参数名为键值对中的键 , 参数值为键值对中的值 。
这个是一对一的获取方式 。
②getParameterValues()方法
上述的是一个参数名对应一个值 , 这个是对应多个值 , 比如复选框就可以选取多个值 。
因为我用的是登录页面 , 只有用户名和密码 。
但对该方法也要有一定的了解 , 该方法获取的值是一个数组 , 使用Arrays类可以将其转化成字符串再打印 。
③getParameterMap()方法
看到Map第一反应就是键值对了 , Map集合的两种遍历方式选择一种遍历打印即可 。
三、request域对象和转发1request域对象
如何理解域对象呢?
前面也说了 , servlet相当于管道 , request相当于管道里的内容 。
而内容自然是需要装在容器里面的 , 这里的容器也就是request域对象 。
和Java里的Map集合有一定的类似之处 , 就连API也很类似 。
浏览器是如何将用户数据发送到服务器的?

文章插图
 
①setAttribute()
设定值 , 其中以键值对的形式存储数据 。
②getAttribute()
获取值 , 根据key值获取对应的value值 。
③removeAttribute()
移除值 , 删除对应的键值对 。
以上就是几个常用的API , 和Java中的集合很相似 。
2request转发
什么叫转发呢?
通俗地理解就是:根据浏览器的路径 , 对应的servlet要处理请求 , 但是这个servlet不想处理 , 就可以转发给另一个servlet来处理 。
像极了我小时候遇到不喜欢吃的菜了 , 就给我爸妈吃的样子……
举一个例子来说明:
浏览器是如何将用户数据发送到服务器的?

文章插图
 
根据浏览器中的路径 , 本来ForwardServlet要处理请求 , 但是它将请求转发给OtherServlet了 , 最后就由OtherServlet来处理 。
那如何使用转发?其对应API为:
  • getRequestDispatcher("/otherServlet") , 参数即为需要转发到的路径 。
  • forward() , 参数也就是请求和响应 。
转发小结:
  • 例子中的转发是转发到了另一个Servlet , 其实也可以转发到一个固定静态页面 。
  • 无论转发多少次 , 浏览器请求路径没有变化 , 对浏览器来说就只有一次请求 。
  • 所以转发属于服务器内部的跳转行为 , 与浏览器无关 。
  • 转发过程中数据是共享的 , 也就是存储在域对象中的数据 。
最后谢谢你的观看 。
如果可以的话 , 麻烦帮忙点个赞 , 谢谢你 。




推荐阅读