ajax使用serialize()方法後,數據無法封裝並獲取(PUT提交方式!)

跟着視頻學習時候,用到了serialize()方法封裝一組form中的數據,然後使用PUT方式提交,但是卻無法獲取到其中的信息,而且信息臺還報錯說SQL語句錯誤,如圖
這裏寫圖片描述
這裏寫圖片描述
如圖,用PUT提交數據後,在Controller.java中寫了一個輸出語句,結果發現獲取到的數據居然都是null!

然而,我之前用POST的方式都沒問題,能夠很好的獲取封裝好的數據然後提取出來。

我根據信息臺去看,說SQL語句報錯,然而SQL語句是mybatis-generator自動生成的,肯定是每錯的。而真正的問題,就出在PUT提交方式

簡單來說就是:Tomcat本身的設置,令Tomcat無法封裝PUT方式提交的數據,只能封裝POST提交的數據,這樣一來,自然無法讀取數據

解決方法:在web.xml中添加如下過濾器

    <filter>
        <filter-name>HttpPutFormContentFilter</filter-name>
        <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HttpPutFormContentFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

原理:我們需要能支持直接發送PUT請求,還要封裝請求體中的數據,配置如上的xml。將請求體中的數據封裝成一個map,request被重新包裝,request.getParameter()會被重新封裝,就會從自己封裝的map中取數據

解決後如圖
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章