最近項(xiàng)目中由境,做了一個(gè)支持上傳文件的后臺(tái)提交功能际看,開(kāi)發(fā)過(guò)程中遇到了以下幾個(gè)問(wèn)題生均,整理并給出具體的解決思路
1)表單重復(fù)提交
2)form表單異步提交
3)批量數(shù)據(jù)寫(xiě)入,事務(wù)回滾
4)SpringBoot默認(rèn)接收文件流大小
問(wèn)題1
1邦马、利用JavaScript防止表單重復(fù)提交贱鼻,通過(guò)添加js腳本,讓用戶(hù)無(wú)法進(jìn)行多次有效點(diǎn)擊
2滋将、表單提交之后邻悬,將提交按鈕設(shè)置為不可用,讓用戶(hù)沒(méi)有機(jī)會(huì)點(diǎn)擊第二次提交按鈕
3随闽、利用Session防止表單重復(fù)提交父丰,通過(guò)session創(chuàng)建token屬性,判斷用戶(hù)是否重復(fù)提交
4掘宪、在分布式環(huán)境中蛾扇,多臺(tái)服務(wù)可能同時(shí)存在,由于路由的問(wèn)題魏滚,通過(guò)session防止表單重復(fù)提交镀首,不能徹底解決問(wèn)題,此時(shí)可以通過(guò)關(guān)聯(lián)操作用戶(hù)信息和token鼠次,創(chuàng)建共享token屬性更哄,放入到緩存服務(wù)中芋齿。
問(wèn)題2
問(wèn)題3
1、通過(guò)Spring聲明式事務(wù)管理機(jī)制
問(wèn)題4
Spring Boot 默認(rèn)最大request size 為1MB(1048576 bytes)成翩。
需要設(shè)置以下兩個(gè)參數(shù)
Spring Boot 1.3.x或者之前
multipart.maxFileSize=100Mb
multipart.maxRequestSize=1000Mb
Spring Boot 1.4.x或者之后
spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=1000Mb