SpringMVC 的" 400 Bad Request "異常

SpringMVC出現400異常的原因主要是以下兩點
  1. 前端傳值是的參數名和後端接收時的參數名不同(與順序無關),導致400(400指的的是請求無效)
  • 處理 調整前端的參數名或調整後端的參數名。
  1. 後端用實體類接收前端的參數。
  • 和第一種一樣,前端多傳了參數,該參數不在實體類的屬性中。
    • 處理 在實體類中添加屬性或者在SpringMvc的單元方法上單獨接收例如
     @Controller
     @RequestMapping("/web/userinfo")
     public class UserController {
    
         @Resource
         private UserService userServiceImpl;
        
         @ResponseBody
         @RequestMapping("/getList.do")
         public List<User> findUserInfo(User user, String page, String pagesize){
             return List<User> users = userServiceImpl.findUserInfo(user, page, pagesize);
    	 }
    }
    
    • 前端傳的參數和實體類的屬性都對的上,實體類能接上參數。

      • 原因 前端傳到後端都是String類型,實體類中有屬性不能由String直接轉換,最常見的就是Date類型。例如
      public class User {
         private int id;
         private String name;
         private int age;
         private Date birthday;
      
         set/get
      
      • 處理,在Date類型的birthday屬性上添加@DateTimeFormat(pattern=“yyyy-MM-dd”)註解,日期格式根據項目需求來定
      public class User {
          private int id;
          private String name;
          private int age;
          @DateTimeFormat(pattern="yyyy-MM-dd")
          private Date birthday;
      
          set/get
      

      該註解依賴jodatime在pom文件中加入

      <!-- joda-time -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>
      

      或者手動添加joda-time-2.9.9
      參考博客
      SpringMVC格式轉化錯誤之HTTP Status [400] – [Bad Request]
      SpringMVC中出現" 400 Bad Request "錯誤
      @JsonFormat與@DateTimeFormat註解的使用

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