Ajax前端請求

2021-10-23 22:49:22 字數 2513 閱讀 9641

最近在做網頁時遇到了一些坑,對於http協議沒有深入了解,以及對httpservletrequest類的理解尚淺,造成一些困擾,分析下請求型別,取值的方法四種常見的 post 提交資料方式值描述

在傳送前編碼所有字元(預設)

multipart/form-data

不對字元編碼。在使用包含檔案上傳控制項的表單時,必須使用該值

作為請求頭告訴服務端訊息主體是序列化的json字串。除低版本的ie,基本都支援

text/plain

空格轉換為 「+」 加號,但不對特殊字元編碼

http 協議是以 ascii 碼傳輸。他是建立在 tcp/ip 協議之上的應用層規範, 規定http 請求分為三個部分:

post型別請求時,其你去引數放在entity-body中,服務端通常是根據請求頭(headers)中的content-type 欄位來獲知請求中的訊息主體是用何種方式編碼,再對主體進行解析。所以 post 提交資料報含了 content-type 和訊息主體編碼方式兩部分

• 瀏覽器預設提交資料的方式;提交的資料按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 url 轉碼。

• 通過debug可以看到此時request是requestfacade

也可以使用@requestbody獲取key1=val1&key2=val2 編碼方式的請求資料

@requestbody和@requestparam可以混合使用,但不建議這麼做

值得注意:request請求體只能讀取一次

2. multipart/form-data

一種常見的post方式表單上傳檔案的方式,必須將 form 表單的資料 enctype 設為 multipart/form-data。

對於服務端處理接受的檔案,目前掌握的以下兩種:

a. 使用org.apache.commons.fileupload依賴包

}b. 使用spring註解獲取引數

("/upload"

)@responsebody

public string upload

(@requestpart

("file"

) multipartfile file)

string filename = file.

getoriginalfilename()

; string filepath =

"儲存檔案的位址"

; file dest =

newfile

(filepath + filename)

;try

catch

(ioexception e)

return

"上傳失敗!";}

public

void test

public

static string readlinestring

(servletinputstream in,string encodeing)

throws ioexception

}while

(result !=-1

);// loop only if the buffer was filled

if(sbuf.

length()

==0)return sbuf.

tostring()

;}

(value =

"/user"

, method = requestmethod.post, consumes =

)public responseentity

killquery

(@requestbody user user)

注意接收時必須用@requestbody來修飾接收到的post body內的物件。

• 傳送

(value =

"/user/"

, method = requestmethod.get, produces=

)@responsebody

public user getuser

(@pathvariable string userid, model model)

4. text/xml

xml 作為編碼方式的遠端呼叫規範

5. 總結參考:

四種常見的 post 提交資料方式

前端小白 web前端ajax請求

本文主要介紹web前端發起ajax請求,動態新增新資料。html頁面的js ajax 請求路徑 datatype json 資料型別 async true,請求是否非同步,預設為非同步,這也是ajax重要特性 success function res error function res ajax ...

表單前端驗證 ajax非同步請求

今天做了乙個登錄檔單的各個欄位的前端的驗證,感覺能用,但不知道還有沒有更好的方法,特別是阻止表單提交那塊,用了4個變數,感覺有點麻煩,明天要後台驗證,用到正規表示式,之前沒用過,又可以嘗試新的東西了 function else if phone attr value length 11 else 非...

ajax請求時前端報400

報錯資訊 bad request the browser or proxy sent a request that this server could not understand.post請求 引數是否一致 post請求 引數型別是否一致 例如上圖 uuid和user都是必填項,值傳遞乙個引數肯定...