1. 程式人生 > >@RequestBody接收json物件報415的解決辦法

@RequestBody接收json物件報415的解決辦法

前端請求:

$.ajax({
            url: basePath() + "/index/login.do",
            type : "post",
            data: JSON.stringify(form),
            dataType : "json",
            contentType : "application/json;charset=utf8",
            success: function (data) {
                console.log(data);
            },
            error: function () {

            }
        });

後端接收:

@ResponseBody
	@RequestMapping(value = "/login",method = RequestMethod.POST,produces = "application/json;charset=utf8")
	public JSONObject login(@RequestBody LoginVo loginVo){

		JSONObject result = new JSONObject();
		UsernamePasswordToken token = new UsernamePasswordToken(loginVo.getUsername(),loginVo.getPassword());
		System.out.println(loginVo.isRememberMe());
		Subject subject = SecurityUtils.getSubject();
		subject.login(token);
		if (subject.isAuthenticated()){
			result.put("result",true);
		}else{
			result.put("result",false);
		}
		return result;
	}

前端ajax請求,後端使用@RequestBody接收,報出415請求資料格式錯誤

錯誤原因:springMVC無法讀取ajax設定好的dataType並以對應的方式處理請求頭,進而無法處理json資料

解決辦法:在maven中引入Jackson相關jar包,並在springMVC的xml中引入相關配置,maven和springMVC的相關程式碼如下:

maven:

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.6</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.6</version>
        </dependency>

springMVC:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!-- 設定返回字串編碼 -->
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name = "supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
                <!-- json轉換器 -->
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

相關推薦

@RequestBody接收json物件415解決辦法

前端請求: $.ajax({ url: basePath() + "/index/login.do", type : "post", data: JSON.stringify(form),

springMVC使用@RequestBody接收Json的過程,解決415的問題ss

今天學習SpringMVC過程中,遇到了用@RequestBody接收Json的問題,開始總是報415,後來翻牆找到了解決辦法,本人用的Spring4 Spring配置檔案所必須最簡配置: <context:annotation-config /&

SpringMVC @RequestBody接收Json物件字串 例子

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="https://code.jq

疑難雜症(6)-- SpringMVC @RequestBody接收Json物件字串

以前,一直以為在SpringMVC環境中,@RequestBody接收的是一個Json物件,一直在除錯程式碼都沒有成功,後來發現,其實 @RequestBody接收的是一個Json物件的字串,而不是一個Json物件。然而在ajax請求往往傳的都是Json物件,後

SpringBoot後端實體通過@RequestBody接收傳進來的json為Null的解決辦法

樓主今天在開發後端介面的時候,遇到了一個傷腦筋的問題,看下圖: 樓主用@RequestBody註解通過實體去接收前端的json值,前端json值和實體TerminalPosition一一對應的,結果發現怎麼傳terminalPosition這個物件都為空,很奇怪; 樓

SpringMVC 之@RequestBody 接收Json陣列物件

前臺使用ajax技術,傳遞json字串到後臺;後臺使用Spring MVC註解@RequestBody 接受前臺傳遞的json字串,並返回新的json字串到前臺;前臺接受後臺傳遞過來的json資料,並顯示。 2. 前臺介面和js <%@ page l

SpringMVC @RequestBody 接收Json陣列物件

<script type="text/javascript"> $(document).ready(function(){ $.ajax({ type:'POST', url:'<%=path%>/user/ceshi.d

@RequestBody SpringMVC 接收Json物件字串

以前,一直以為在SpringMVC環境中,@RequestBody接收的是一個Json物件,一直在除錯程式碼都沒有成功,後來發現,其實 @RequestBody接收的是一個Json物件的字串,而不是一個Json物件。然而在ajax請求往往傳的都是Json物件,後來發現用 JSON.stringify(data

HttpServletRequest接收的是Json格式資料的解決辦法

@Override     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { i

從富文字編輯器獲取html內容組裝json,特殊字元引起解決辦法

最近專案需要,需要從富文字編輯器獲取html內容組裝json,然後還要 把組裝後的json物件利用json2轉成json字串,資料放入編輯器提交,由於相容ie8以上瀏覽器。所以搞了好久的特殊字元轉義,

關於ThinkPHP3.2框架接收不到json數據的解決辦法

content inpu 接收不到 驗證 info 分享 9.png 技術分享 數組 原因分析: 在tp框架中,我們經常使用的 I 方法是加過驗證和默認的函數過濾的。所以我們接收的值當我們json_decode的時候就會出現空的字段 那麽我們是不是又會像網上說的不用

python 鏈接codis 解決辦法 command 'EXEC' is not allowed

command 'exec' is not allowed python redis codis [[email protected]/* */ ceph]# python ../pkg/redisbase.py Traceback (most recent cal

Authentication token manipulation error解決辦法

erro ive 參考 ext .net center tex tps tro Authentication token manipulation error報錯解決辦法 #參考http://blog.163.com/junwu_lb/blog/static/1916798

PHP 獲取JSON json_decode返回NULL解決辦法

單引號 .com 獲取json 原來 json數據 頁面 替換 解決辦法如下 對象 在用json_decode對JSON格式的字符串進行解碼時竟然為空,頁面空白啊,整半天檢查這裏檢查那裏,問同事都沒用。 今天必應搜索了下,問題解決了,原來是有BOM頭輸出,大蝦的解決辦法如下

Mysql安裝解決辦法

base edi 註意 eve program 搜索 重新啟動 5.1 edit .msi版MySQL安裝包在安裝最後執行的時候到第三部或者第四部死掉 主要是因為之前安裝的版本沒有卸載幹凈,要卸載幹凈MySQ安裝包有一些幾個步驟: 1.通過卸載程序MySQL的相關組件 2。

ORA-09817: Write to audit file failed 解決辦法

ora-09817 archivelog 上午開虛擬機登錄數據庫的時候,突然就報錯:ORA-09817: Write to audit file failed寫入失敗?不會是磁盤滿了吧?當然,no space left on device提示的很明顯,df -h 查詢一下,果然100%了:馬上搜羅下o

Maven 本地倉庫明明有jar包,pom文件還是解決辦法

lips rep win 選擇 class osi 方案 pom nbsp 方法一: 找到出錯的jar包文件位置,刪掉_maven.repositories文件 方法二: maven中的本地倉庫的index索引沒有更新導致 解決方案:

loadrunner-27077解決辦法

包含 use msg 報錯解決 運行時 init AC 警告 設置 警告 -27077: “每次叠代模擬一個新用戶”運行時設置為“開”時,“vuser_init”節將包含 Web 函數。這可能會產生具有多次叠代的不可預測結果 [MsgId: MWAR-27077] 正在

3.django連接mysql數據庫及安裝mysqldb驅動解決辦法

64位 分享圖片 l數據庫 required 後來 AS password www com 1.在setting.py設置連接數據庫 DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.m

Rsync服務器搭建遇到的解決辦法

Rsync報錯 linux centOS 遇到錯誤1:[root@backup tmp]# rsync -avz /etc/hosts -e 'ssh -p 22' [email protected]:/tmp/rsync: Failed to exec ssh: No such fi