自学Java第90天 refresh是什么意思

今天是刘小爱自学Java的第90天 。
感谢你的观看,谢谢你 。
【自学Java第90天 refresh是什么意思】话不多说 , 开始今天的学习:

自学Java第90天 refresh是什么意思

文章插图
昨天学习了request , 做一个简单的回顾:
request是浏览器向服务器发起请求,会传递一些信息 。
那么现在问题来了,我向你发起了请求,你是不是应该给我一个回应?
这就需要使用到response响应了 。
response和request有一定的类似之处,今天就来仔细学一学这个response 。
一、响应response1响应流程
自学Java第90天 refresh是什么意思

文章插图
①浏览器向服务器发起请求
浏览器通过映射路径向服务器发起请求,昨天已详细讲解 , 不再赘述 。
②服务器响应浏览器
既然是响应,肯定是通过response对象调用方法响应,其API为:
getWriter().print("hello") 。
就是一个输出语句,这样在服务器中就将信息响应给浏览器了 。
我这里使用的是一个字符串,也可是使用某个对应路径的文件,比如图片 。
2响应报文
在请求中有请求行、请求头、请求体;在响应中也会有响应行、响应头、响应体 。
同样的操作,使用抓包工具查看响应数据:
自学Java第90天 refresh是什么意思

文章插图
①响应行
昨天学请求报文的时候,我一直以为General中的都是请求头 。
事实上这是由请求行和响应行共同组成,其中它们还有重复的部分 。
  • 请求行包括:请求方式  , url 和协议/版本
  • 响应行包括:状态码,协议/版本 。
②响应头
同样也是以键值对的形式传递一些信息 。
③响应体
在Response选项卡中可以看到响应体,也就是输出的内容 。
3响应行中的状态码
关于状态码是非常多的 , 状态码由三个数字组成,根据开头第一个数字有不同的功能 。
根据第2、3个数字又有进一步垂直细分 。
自学Java第90天 refresh是什么意思

文章插图
因为状态码太多了 , 很难将其每一个都记下来,了解常用的几个即可 。
  • 200:请求成功,上述例子中的也就是200
  • 301:资源永久被转移到其他URL了
  • 302:请求的资源临时从不同的URI响应请求 。
  • 404:资源不存在,这也是非常常见的状态码了 。
  • 500:服务器内部错误,通常也就是代码哪里写错了 。
二、响应API和请求API一样,响应API是通过Java中HttpServletResponse这个类对应的对象操作 。
1响应行
setStatus(200)方法,参数即为状态码,可以向服务器发送对应的额状态码 。
虽然说响应行中也有协议/版本,但是这些服务器是不能设定的,这也很好理解,都是由统一制定的规则 。
2响应头
setHeader(参数a , 参数b)方法,一共有两个参数,可以实现对应的功能,逐一讲解:
自学Java第90天 refresh是什么意思

文章插图
①关于页面定时刷新:
  • 参数a:refresh , 刷新的意思 。
  • 参数b:由时间和url组成,两者之间使用分号隔开 。
  • 比如“2;url”即表示2秒后页面刷新到对应的url 。
我做了一个测试,发现如果时间不写,只写一个url,刷新页面时竟然不会跳转 。
也不知道我是不是忽视了什么,暂且就以这个测试作为一个结果好了 。
自学Java第90天 refresh是什么意思

文章插图
②内容类型为简单文本:
  • 参数a:content-type,也就是内容类型 。
  • 参数b:text/plain;charset=utf-8,两者之间也是使用分号隔开,前者为文本内容 , 后者为编码 。
因为该方式时常被使用,所以其有一个简化版的方法:
setContentType(text/plain;charset=utf-8)
说白了也就是将setHeader()方法中的参数a变成方法名里的一部分了,也好理解记忆 。
③内容类型为HTML:
②中参数为text/plain,plain , 简单的朴素的意思,也就是其输出的内容是没有经过渲染的,输出什么就是什么 。
而③中是text/html,html是超文本标记语言,在浏览器中会经过渲染成对应的格式 。
输出的虽然是h1标签,但是在浏览器中会被渲染成一个标题格式的字体 。
3响应体
也就是最先开始说的API:getWriter().print()
三、重定向昨天学习了request中的转发,在response中有个和其非常类似的功能,叫重定向 。
自学Java第90天 refresh是什么意思

文章插图
重定向,重新定了一个方向 。浏览器访问服务器是有多次的 。
①第一次访问服务器
根据浏览器的访问路径,服务器通过响应头实现重定向:
setHeader("location","/responseServletTwo")
前面参数为location,后面参数为对应的路径 。
这个的意思就是服务器响应浏览器,告诉它:你去找我给你设定的这个路径 。
事实上,这时就已经完成一次请求一次响应了 。
其还有一种简写方法:
response.sendRedirect("/responseServletTwo")
Redirect,翻译就是重定向的意思 。
②第二次访问服务器
浏览器根据服务器重定向的路径再次访问,这样就找到了ResponseServletTwo 。
该servlet再次响应浏览器,从而输出内容 。
以上就是对于重定向的说明 , 其作用和request中的转发非常的相似 。
但转发与重定向也有一定的区别,画图分析:
自学Java第90天 refresh是什么意思

文章插图
转发本质上只有一次请求一次响应,是服务器内部的转发行为 。
无论多少次转发就一次请求和一次响应,浏览器上的路径不变 。
重定向是多次请求多次响应,浏览器上的路径发生了改变 。
用现实生活中的一个例子来理解:
  • 我去吃饭的时候,发现碗里有不喜欢的菜 。
  • 我将菜直接给我妈妈了 , 这就叫转发 。
  • 我将菜重新放回菜碗里了,并对我妈说您吃 , 妈妈从菜碗里夹过去吃了,这就叫重定向 。
  • 菜碗就相当于浏览器 , 我和我妈都是服务器中的servlet之一 。
当然,这个例子不太准确,毕竟浏览器是主动方,是由它发起请求的,菜碗是被动的 。
这是暂且使用这个例子来加深自己对其的理解 。
最后谢谢你的观看 。
如果可以的话,麻烦帮忙点个赞,谢谢你 。