今天是刘小爱学习JAVA的第89天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:

文章插图
在学习之前 , 先思考如下问题:
- 对于浏览器来说:
- 如何将用户数据发送到服务器呢?
- 数据传输的格式是怎么样的呢?
- 对于服务器来说:
- 如何获取用户提交的数据呢?
- 如何将结果响应给浏览器?

文章插图
如果把servlet比作浏览器和服务器之间的一个通道 , 那么request和response也就是通道里的内容 。
【浏览器是如何将用户数据发送到服务器的?】当然这样说明肯定不太准确 , 但是初学这样更好理解 , 今天就学一学这个request 。
一、get、post请求在学form表单的时候就知道了请求有get和post之分 , 当然请求方式不只有这两个 , 但目前主要接触这两种 。
分析下浏览器发送请求到服务器的流程:

文章插图
①登录页面
这是我在网上找的一个bootstrap登录页面 , 其本质也就是一个form表单 , 只不过加入了美化 。
form表单标签有两个属性:
- action:也就是表单提交后会跳转的路径 , 我这边设置的为“/getServlet”
- method:也就是请求方式 , 我这边设置的是get请求 。

文章插图
②浏览器地址
当点击登录提交按钮后 , 浏览器就会跳转action中对应的那个路径 。其中get请求:会将参数拼接到url后面 。
如何拼接的呢?
input标签中的name属性对应的值等于输入框中输入的值 。
也就是:username=刘小爱 。
③注解Servlet开发
使用注解开发的方式创建一个类GetServlet , 其路径为“/getServlet” 。
而在①中点击登录时会跳转“/getServlet” , 所以会找到这个类 , 从而执行doGet()请求方法 。
浏览器抓包观察请求报文
这边我又将①中表单请求方式改成post了 , 主要也是为了将get和post做一个总结对比 。

文章插图
一般是用谷歌浏览器 , 按F12进入开发调试 , 在Network选项中可以抓包 。
①请求行
在get请求中参数是被拼接在url后面的 。
而在post请求中是不拼接参数的 。
正是因为如此 , get请求不可以传输数据类较大的或者非文本数据 , 因为太长了url写不下了哈哈哈 。
②请求头
以键值对的形式将信息传输给服务器 。
③请求体
post请求的参数在请求体中 , 而get请求请求体为空 。
二、request请求API回到最先开始的几个问题 , 浏览器将数据传输给服务器了 。
那么服务器如何获取这些数据呢?又如何进行处理呢?
在Java中一切都是对象 , 肯定有对应的类和对象 。
1Request请求行

文章插图
①getMethod()方法
其获取的就是浏览器发起的请求方式 , 例子中是post请求 。
②getRequestURI()方法
其获取的就是浏览器访问的路径 。
③getRemoteAddr()方法
这个是ip值 , 因为我的是本地电脑 , 所有就这样了 。
④getProtocol()方法
获取的协议版本号 , 这里是HTTP/1.1 。
2Request请求头

文章插图
请求头中的信息是以键值对的形式传送给服务器的 。
其中关于getHeader()方法中的参数:user-agent 。
- user:浏览器携带的用户操作系统 。
- agent:浏览器版本等信息 。
电脑系统为Win10 , 64位系统 , 后面还有能看出是用的谷歌浏览器访问 , 其它的很多信息暂时不懂 。
推荐阅读
- 淘宝上的物流异常提醒是什么意思 淘宝物流异常提醒是怎么回事
- 开网店自己开好还是代理的好 网上开店代理怎么做
- 清除单元格中的小引号,看看你是哪种青年
- 简单查询自己电脑是否被入侵,两招教你查看黑客入侵,拒绝做肉鸡
- 还在担心KMS激活会损坏电脑系统?教你如何正确使用
- 我的电脑里老是自动下载一些软件,该怎么办?
- 主板的接口都是用来干什么的?你插对了吗?你绝对想知道的
- 人一天消耗多少卡路里?
- 亚特兰蒂斯真的存在吗?
- kb是什么意思啊?
