一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【JavaWeb】90:response響應

 劉小愛v 2020-07-13

今天是劉小愛自學Java的第90天。

感謝你的觀看,謝謝你。

話不多說,開始今天的學習:

昨天學習了request,做一個簡單的回顧:

request是瀏覽器向服務器發(fā)起請求,會傳遞一些信息。

那么現(xiàn)在問題來了,我向你發(fā)起了請求,你是不是應該給我一個回應?

這就需要使用到response響應了。

response和request有一定的類似之處,今天就來仔細學一學這個response。

一、響應response

1響應流程

①瀏覽器向服務器發(fā)起請求

瀏覽器通過映射路徑向服務器發(fā)起請求,昨天已詳細講解,不再贅述。

②服務器響應瀏覽器

既然是響應,肯定是通過response對象調(diào)用方法響應,其API為:

getWriter().print("hello")。

就是一個輸出語句,這樣在服務器中就將信息響應給瀏覽器了。

我這里使用的是一個字符串,也可是使用某個對應路徑的文件,比如圖片。

2響應報文

在請求中有請求行、請求頭、請求體;在響應中也會有響應行、響應頭、響應體。

同樣的操作,使用抓包工具查看響應數(shù)據(jù):

①響應行

昨天學請求報文的時候,我一直以為General中的都是請求頭。

事實上這是由請求行和響應行共同組成,其中它們還有重復的部分。

  • 請求行包括:請求方式 ,url 和協(xié)議/版本
  • 響應行包括:狀態(tài)碼,協(xié)議/版本。

②響應頭

同樣也是以鍵值對的形式傳遞一些信息。

③響應體

在Response選項卡中可以看到響應體,也就是輸出的內(nèi)容。

3響應行中的轉(zhuǎn)態(tài)碼

關于狀態(tài)碼是非常多的,狀態(tài)碼由三個數(shù)字組成,根據(jù)開頭第一個數(shù)字有不同的功能。

根據(jù)第2、3個數(shù)字又有進一步垂直細分。

因為狀態(tài)碼太多了,很難將其每一個都記下來,了解常用的幾個即可。

  • 200:請求成功,上述例子中的也就是200
  • 301:資源永久被轉(zhuǎn)移到其他URL了
  • 302:請求的資源臨時從不同的URI響應請求。
  • 404:資源不存在,這也是非常常見的狀態(tài)碼了。
  • 500:服務器內(nèi)部錯誤,通常也就是代碼哪里寫錯了。

二、響應API

和請求API一樣,響應API是通過Java中HttpServletResponse這個類對應的對象操作。

1響應行

setStatus(200)方法,參數(shù)即為狀態(tài)碼,可以向服務器發(fā)送對應的額狀態(tài)碼。

雖然說響應行中也有協(xié)議/版本,但是這些服務器是不能設定的,這也很好理解,都是由統(tǒng)一制定的規(guī)則。

2響應頭

setHeader(參數(shù)a,參數(shù)b)方法,一共有兩個參數(shù),可以實現(xiàn)對應的功能,逐一講解:

①關于頁面定時刷新:

  • 參數(shù)a:refresh,刷新的意思。
  • 參數(shù)b:由時間和url組成,兩者之間使用分號隔開。
  • 比如“2;url”即表示2秒后頁面刷新到對應的url。

我做了一個測試,發(fā)現(xiàn)如果時間不寫,只寫一個url,刷新頁面時竟然不會跳轉(zhuǎn)。

也不知道我是不是忽視了什么,暫且就以這個測試作為一個結(jié)果好了。

②內(nèi)容類型為簡單文本:

  • 參數(shù)a:content-type,也就是內(nèi)容類型。
  • 參數(shù)b:text/plain;charset=utf-8,兩者之間也是使用分號隔開,前者為文本內(nèi)容,后者為編碼。

因為該方式時常被使用,所以其有一個簡化版的方法:

setContentType(text/plain;charset=utf-8)

說白了也就是將setHeader()方法中的參數(shù)a變成方法名里的一部分了,也好理解記憶。

③內(nèi)容類型為HTML:

②中參數(shù)為text/plain,plain,簡單的樸素的意思,也就是其輸出的內(nèi)容是沒有經(jīng)過渲染的,輸出什么就是什么。

而③中是text/html,html是超文本標記語言,在瀏覽器中會經(jīng)過渲染成對應的格式。

輸出的雖然是h1標簽,但是在瀏覽器中會被渲染成一個標題格式的字體。

3響應體

也就是最先開始說的API:getWriter().print()

三、重定向

昨天學習了request中的轉(zhuǎn)發(fā),在response中有個和其非常類似的功能,叫重定向。

重定向,重新定了一個方向。瀏覽器訪問服務器是有多次的。

①第一次訪問服務器

根據(jù)瀏覽器的訪問路徑,服務器通過響應頭實現(xiàn)重定向:

setHeader("location","/responseServletTwo")

前面參數(shù)為location,后面參數(shù)為對應的路徑。

這個的意思就是服務器響應瀏覽器,告訴它:你去找我給你設定的這個路徑。

事實上,這時就已經(jīng)完成一次請求一次響應了。

其還有一種簡寫方法:

response.sendRedirect("/responseServletTwo")

Redirect,翻譯就是重定向的意思。

②第二次訪問服務器

瀏覽器根據(jù)服務器重定向的路徑再次訪問,這樣就找到了ResponseServletTwo。

該servlet再次響應瀏覽器,從而輸出內(nèi)容。

以上就是對于重定向的說明,其作用和request中的轉(zhuǎn)發(fā)非常的相似。

轉(zhuǎn)發(fā)與重定向也有一定的區(qū)別,畫圖分析:

轉(zhuǎn)發(fā)本質(zhì)上只有一次請求一次響應,是服務器內(nèi)部的轉(zhuǎn)發(fā)行為。

無論多少次轉(zhuǎn)發(fā)就一次請求和一次響應,瀏覽器上的路徑不變。

重定向是多次請求多次響應,瀏覽器上的路徑發(fā)生了改變。

用現(xiàn)實生活中的一個例子來理解:

  • 我去吃飯的時候,發(fā)現(xiàn)碗里有不喜歡的菜。
  • 我將菜直接給我媽媽了,這就叫轉(zhuǎn)發(fā)。
  • 我將菜重新放回菜碗里了,并對我媽說您吃,媽媽從菜碗里夾過去吃了,這就叫重定向。
  • 菜碗就相當于瀏覽器,我和我媽都是服務器中的servlet之一。

當然,這個例子不太準確,畢竟瀏覽器是主動方,是由它發(fā)起請求的,菜碗是被動的。

只是暫且使用這個例子來加深自己對其的理解。

最后

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    在线日本不卡一区二区| 日韩欧美在线看一卡一卡| 欧美日韩综合免费视频| 欧美日韩在线观看自拍| 亚洲中文字幕视频一区二区 | 不卡一区二区在线视频| 亚洲一区二区精品福利| 国产亚洲欧美一区二区| 久久久精品区二区三区| 国语久精品在视频在线观看| 婷婷伊人综合中文字幕| 日韩精品一区二区三区含羞含羞草| 日韩中文字幕视频在线高清版| 在线播放欧美精品一区| 日本少妇中文字幕不卡视频| 人妻中文一区二区三区| 国产精品视频第一第二区| 99精品国产一区二区青青| 91人妻人澡人人爽人人精品| 视频在线免费观看你懂的| 99亚洲综合精品成人网色播| 欧美性欧美一区二区三区| 婷婷激情五月天丁香社区| 欧美不雅视频午夜福利| 欧美激情一区二区亚洲专区| 精品日韩av一区二区三区| 在线免费观看黄色美女| 台湾综合熟女一区二区| 91在线国内在线中文字幕| 日韩欧美高清国内精品| 蜜臀人妻一区二区三区| 四季精品人妻av一区二区三区 | 国产一区二区三区精品免费| 中文字幕佐山爱一区二区免费| 大香蕉伊人一区二区三区| 男生和女生哪个更好色| 中日韩美一级特黄大片| 国产传媒精品视频一区| 激情亚洲一区国产精品久久| 果冻传媒精选麻豆白晶晶| 日本在线高清精品人妻|