java核心技術2 request請求

2021-07-25 04:38:55 字數 2862 閱讀 9734

一,request概念及常用的api

1.1-request表示客戶端向伺服器發出的請求,

所有客戶端資訊和客戶端提交的資料,均封裝在request物件中。這個請求或者物件就是request。

request全稱httpservletrequest

:瀏覽器輸入**的請求預設是get請求

http請求分為三部分

1_請求行

2_請求頭

3_請求體/請求正文/實體內容

全部傳送給伺服器,讓伺服器知道客戶端的情況

1.2-request常用api

獲取客戶機資訊:

getrequesturl()方法返回客戶端發出請求時的完整url

getrequesturi()方法返回請求行中的資源名部分

getquerystring()方法返回請求行中的引數部分

getremoteaddr()方法返回發出請求的客戶機的ip位址

getlocaladdr()方法返回web伺服器的ip位址

getmethod()方法返回客戶機請求方式

getcontextpath()方法返回當前web應用根目錄

getservletpath()方法返回servlet對映路徑

獲取請求頭資訊

getheader()方法返回請求頭的值

獲取請求體引數

getparameter()方法通過name獲得值

getparametervalues()方法通過name獲得多值

getparameternames ()方法獲得所有name

二、表單提交中文亂碼的原因和解決方案

2.1-為什麼表單中有中文,會出現亂碼呢?

客戶端以utf-8將中文編碼,而tomcat用iso8859-1解碼,編碼和解碼不一致,造成亂碼
2.3-解決方案

通用方式:適用於get和post

byte buf = username.getbytes(「iso8859-1」);按iso8859-1編碼

string username = new string(buf,」utf-8」);按utf-8解碼

專用方式:適用於post

request.setcharacterencoding(「utf-8」);針對請求體內容按utf-8編碼

request.getparameter(「username」)

如果專案中get和post業務功能相同的話,可以在doget()方法中呼叫dopost()

三、request域物件

[request物件既可以代表客戶端向伺服器的請求,也可以當做暫存資料的域物件]

3.1-什麼是域物件

域物件初學者可以理解為乙個容器,可以暫存string-object這種key-value形式的資料

域物件儲存時間是不同的,有的域物件儲存時間在一次請求中;有的域物件儲存時間在一次會話中;

有的域物件儲存時間在整個應用中。其中request域物件儲存時間只在一次請求中,也就是說

一次請求完畢後,request域物件就銷毀了,一旦request域物件銷毀,那麼存在其中的資料也

就不存在了。

3.2-為什麼需要域物件

有時我們的業務,乙個servlet完成不了,需要另乙個servlet幫忙,這就是說,

我們需要在二個或多個servlet之間傳遞資料,域物件就負責完成這項任務

3.3-request物件有二層含義:

01——代表客戶端向伺服器的請求物件,如getparameter(「username」)

02——代表可以暫存資料的域物件,如下如示api

3.4-request作為域物件常用的api

setattribute():向域物件中繫結key=value形式的資料

getattribute():從域物件中根據key找value,如果取到不到,返回null

removeattribute():從域物件中刪除key對應的value

servletcontext和request兩個域物件的比較

四、request**

4.1-多個servlet配合工作

有些時候,乙個servlet不能很好的完成業務工作,需要另一

個servlet來配合。這就是說,很有可能乙個servlet需要將

流程交由另乙個servlet,此時就要用**或重定向這二個

技術了,這裡我們談request**。

4.2-要**必須得用request.getrequestdispatcher().forward()方法

request.getrequestdispatcher(配置的虛擬路徑或者是html和jsp頁面).forward(request, response);
4.3-**是伺服器內部的事,與瀏覽器無關,所以瀏覽器的位址列不會變,

原來瀏覽器以什麼方式提交資料,**到另乙個servlet依然執行對應的

do***方法。

瀏覽器以post提交—第乙個servlet::dopost—第二個servlet::dopost

瀏覽器以get提交—第乙個servlet::doget—第二個servlet::doget

!注意:**不限於servlet之間,servlet也可以**到html和jsp頁面

Java核心技術 筆記6 7

1 repeat 10 0 system.out.println hello world 要接受此lambda表示式,需要提供函式式介面 public static void repeat int n runnable action action.run 會執行lambda表示式主體 2.不止乙個函...

Java核心技術 筆記6 8

1.區域性內部類中,若只建立乙個類的物件 只用了一次 就不用命名了,即 匿名內部類 public void start int interval,boolean beep timer t new timer interval listener t.start 0 形式即 new supertype ...

Java核心技術 筆記7 1

1.異常物件都是派生於 throwable 類的乙個例項 非受查異常 error層描述內部錯誤 和 資源耗盡錯誤 由程式導致的異常屬於runtimeexception 受查異常 程式本身沒有問題,執行時產生的錯誤 如io,取決於環境而非 屬於其他異常 2.用throws宣告異常 不宣告error異常...