欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用SpringMVC訪問Controller接口返回400BadRequest

 更新時(shí)間:2022年03月15日 10:11:15   作者:思想永無止境  
這篇文章主要介紹了使用SpringMVC訪問Controller接口返回400BadRequest,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

訪問Controller返回400BadRequest

問題

SpringMVC使用自定義類型接收參數(shù)時(shí), form提交會(huì)返回400 Bad Request,controller接口里的方法沒有得到調(diào)用。

@RequestMapping(value = "/list.do", method = {RequestMethod.GET , RequestMethod.POST})
? ? public String list(Order param, HttpServletRequest request) {
? ? ? ? logger.info(JSONObject.fromObject(param).toString());
? ? ? ? Integer count = orderService.findCount(param);
? ? ? ? logger.info(count);
? ? ? ? param.setRows(count);
? ? ? ? List<Order> result = orderService.findByPage(param);
? ? ? ? logger.info(JSONArray.fromObject(result).toString());
? ? ? ? request.setAttribute("param", param);
? ? ? ? request.setAttribute("result", result);
? ? ? ? return "order/list";
? ? }
? ? <form action="<%=basePath%>order/list.do" id="myform" method="post" >
? ? ? ? <input type="hidden" name="currentPage" value="${param.currentPage}"/>
? ? ? ? <table>
? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? <td width="80" align="right">訂單狀態(tài): </td>
? ? ? ? ? ? ? ? <td>
? ? ? ? ? ? ? ? ? ? <select name="order_status" autoWidth="true" style="width:120px;">
? ? ? ? ? ? ? ? ? ? ? ? <option value="">全部</option>
? ? ? ? ? ? ? ? ? ? ? ? <c:forEach items="${order_status_map}" var="temp">
? ? ? ? ? ? ? ? ? ? ? ? ? ? <option value="${temp.key}" <c:if test="${temp.key == param.order_status}">selected="selected"</c:if>>${temp.value}</option>
? ? ? ? ? ? ? ? ? ? ? ? </c:forEach>
? ? ? ? ? ? ? ? ? ? </select>
? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? ? ? <td align="right">訂單號(hào): </td>
? ? ? ? ? ? ? ? <td>
? ? ? ? ? ? ? ? ? ? <input type="text" name="order_no" id="order_no" onfocus="this.value=''" value="${param.order_no}" style="width:140px;"/>
? ? ? ? ? ? ? ? </td>
? ? ? ? ? ? </tr>
? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? <td width="80" align="right">創(chuàng)建時(shí)間: </td>
? ? ? ? ? ? ? ? <td><input type="text" class="date" name="createTimeStart" value="${param.createTimeStart}" style="width:120px;"/></td>
? ? ? ? ? ? ? ? <td align="center">&nbsp;至&nbsp;</td>
? ? ? ? ? ? ? ? <td><input type="text" class="date" name="createTimeEnd" ?value="${param.createTimeEnd}" style="width:120px;"/></td>
? ? ? ? ? ? ? ? <td><button><span class="icon_find">查詢</span></button></td>
? ? ? ? ? ? ? ? <td><button onclick="add();return false;"><span class="icon_add">添加</span></button></td>
? ? ? ? ? ? </tr>
? ? ? ? </table>
? ? </form>

直接在瀏覽器地址欄輸入<%=basePath%>order/list.do是可以訪問的并查詢出數(shù)據(jù)的,我一開始以為是get方法能訪問,post不能訪問,后來發(fā)現(xiàn),get使用Context-Type為application/x-www-form-urlencoded時(shí)也會(huì)訪問不了,post使用使用application/json也能訪問。

所以,這就需要修改form里的enctype屬性為application/json,但是enctype屬性只支持下面表格三種,

HTML form 標(biāo)簽的 enctype 屬性

描述
application/x-www-form-urlencoded在發(fā)送前編碼所有字符(默認(rèn))
multipart/form-data不對(duì)字符編碼。在使用包含文件上傳控件的表單時(shí),必須使用該值。
text/plain空格轉(zhuǎn)換為 “+” 加號(hào),但不對(duì)特殊字符編碼。

我試了下,text/plain和application/json具有同樣的效果。

雖然在form里加上enctype=”text/plain”可以解決接口返回400BadRequest的問題,但是有新的問題出現(xiàn):接口的參數(shù)Order param接受不到post提交的值,但是將參數(shù)直接拼接在url,Order param則可以接收到值,Order param

SpringMVC遇到的Http400BadRequest總結(jié)

在搭建SpringMVC環(huán)境,在使用中遇到了多次Bad Request的連接

下面來總結(jié)下

1.參數(shù)類型不對(duì),如后臺(tái)實(shí)體類的屬性為int,但傳來的參數(shù)為字符串

2.因?yàn)槲业拇中?,本來是要通過Ajax獲得一個(gè)json串,但是后臺(tái)的方法在返回值類型前沒有加@RequestBody注解

3.傳遞的參數(shù)為日期,spring不知道該以什么格式轉(zhuǎn)換為Date類型,解決辦法為在實(shí)體類的日期屬性上加上@DateTimeFormat(pattern="yyyy-MM-dd")注解即可

4.剛遇到的問題,排查了好久終于知道是什么原因了,實(shí)體類中有int類型的屬性,但是前臺(tái)傳參時(shí)傳遞的樣子是這樣的"age=",并沒有給一個(gè)準(zhǔn)確的數(shù)字(age=18),所以導(dǎo)致Spring在對(duì)int型屬性進(jìn)行賦值時(shí)無法正確賦值

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 定時(shí)器(Timer)及線程池里使用定時(shí)器實(shí)例代碼

    Java 定時(shí)器(Timer)及線程池里使用定時(shí)器實(shí)例代碼

    這篇文章主要介紹了Java 定時(shí)器(Timer)及線程池里使用定時(shí)器實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Java8新特性:lambda表達(dá)式總結(jié)

    Java8新特性:lambda表達(dá)式總結(jié)

    這篇文章主要介紹了Java8新特性:lambda表達(dá)式總結(jié),本文總結(jié)了多種語法格式和使用方法,包含了函數(shù)式接口和內(nèi)置的四大核心函數(shù)式接口的用法實(shí)例,需要的朋友可以參考下
    2021-06-06
  • java常用工具類 XML工具類、數(shù)據(jù)驗(yàn)證工具類

    java常用工具類 XML工具類、數(shù)據(jù)驗(yàn)證工具類

    這篇文章主要為大家詳細(xì)介紹了java常用工具類,包括XML工具類、數(shù)據(jù)驗(yàn)證工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Spring IOC (DI) 依賴注入的四種方式示例詳解

    Spring IOC (DI) 依賴注入的四種方式示例詳解

    這篇文章主要介紹了Spring IOC (DI) 依賴注入的四種方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • SpringCloud全局過慮器GlobalFilter的用法小結(jié)

    SpringCloud全局過慮器GlobalFilter的用法小結(jié)

    這篇文章主要介紹了SpringCloud全局過慮器GlobalFilter的使用,全局過慮器使用非常廣泛,比如驗(yàn)證是否登錄,全局性的處理,黑名單或白名單的校驗(yàn)等,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java+mysql本地圖片上傳數(shù)據(jù)庫及下載示例

    Java+mysql本地圖片上傳數(shù)據(jù)庫及下載示例

    本篇文章主要介紹了Java+mysql本地圖片上傳數(shù)據(jù)庫及下載示例,具有一定的參加價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • springboot中如何使用openfeign進(jìn)行接口調(diào)用

    springboot中如何使用openfeign進(jìn)行接口調(diào)用

    這篇文章主要介紹了springboot中如何使用openfeign進(jìn)行接口調(diào)用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mybatis if test 不為空字符串且不為null的問題

    mybatis if test 不為空字符串且不為null的問題

    這篇文章主要介紹了mybatis if test 不為空字符串且不為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Sentinel熱點(diǎn)key限流的實(shí)現(xiàn)詳解

    Sentinel熱點(diǎn)key限流的實(shí)現(xiàn)詳解

    這篇文章主要介紹了Sentinel熱點(diǎn)key限流的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 用java WebSocket做一個(gè)聊天室

    用java WebSocket做一個(gè)聊天室

    這篇文章主要為大家詳細(xì)介紹了用java WebSocket做一個(gè)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論