您的位置:首页 > 编程语言 > Java开发

springmvc bad 400问题总结

2016-05-20 10:02 267 查看
今天在做项目的时候突然遇到bad 400 ,哎呦喂,我的天啊,各种处理,各种百度,然并卵。。。。

我的请求是这样的:

前台:

$.ajax({

                        type:  'DELETE',

                        dataType: 'json',

                        url : './software/uploadFile/',

                        data : JSON.stringify(kwordgroups),

后台:

不幸的是:

"NetworkError: 400 Bad Request - http://localhost:8080/xxxx/software/uploadFile/"
我百度的结果是这样的:

转的+:方法一,简单粗暴(也许不是想要的,别着急下来还有)。

现在有很多朋友要打开某网页时会出现400 BadRequest的图样,大部分的人会以为自己电脑已中毒,其实不然,据我检查,有以下几种办法可以解决这一问题。

  一:有可能你所发出的指令不正确,需要更正自己所要查询的地点。

  二:检查一下DNS是否错误,需要提供电脑更完整的模式数据。

  三:你所搜寻的网页地址是否合法?有可能被阻截。
  
  四:看一下requestheader是否过大,如果request过大,一般值数过大也会引起同样问题。
  
  五:用浏览器将COOKIE和私有数据确定一下。

   六:如果你实在菜,有时重新启动电脑这种情况会有所好转。
 
 还有一点值得注意,有的朋友下载了一些网站的高速浏览器,也有可能会出现这样的问题。我用360高速浏览器就会这样,把高速浏览器删了,问题就自然消除了。

转: 方法二:问题细节处理
 1、我的解决办法就是把实体类的javabean里边的类型都改成string类型了,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再Java中用到这个字符串类型的日期的话,有必要的话,就用For
format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()来转换。
       2、其实还可以在实体类中定义Date和int类型对应的字符串类型成员变量,这样前台的表单中field或者name与之对应上即可,这样也成功转成实体类了,不过转成之后,得在java中把它字符串类型的转成对应的Date或者int类型赋给相应的成员变量即可。

       3、在就是还有一种方法就是在对应的实体类的对应的非字符串类型的变量的setter方法中传入string类型的,然后在里边用SimpleDateFormat或者Integer进行转化。

       4、最后还有一种方法,就是实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解,大部分是可以成功使用的。如果这种方法不可用的话,你看继续尝试如下方法:不过这个前提是前台穿过的日期为json形式而非字符串形式,如前台类似$("#id").val()来获取日期直接传给后台的话是不行的,你需要在前台引入JSON官网的json.js库或者引入jQuery的jquery.json-2.4.js库,然后如果是前者的话就new
Date(stringDate).parseJSON()来转化再传给后台,如果是后者的话,$.toJSON(new Date(stringdate))来传给后台,这种方式比较麻烦,有网友留言特意讨论了一下这个问题,所以建议采用第一种方式。

       如果你有更好的更优秀的方式解决这种问题,还请您手下留情,留下您的宝贵意见,以使大家共同的学习和成长。

       网上我看了一些有关问题,看网友们还有一些其他原因导致这个错误的,特总结归纳了一下方便网友们参考:

(1)log4j的配置文件里错误将部分log打为Info级别所致

(2)传参数的时候,参数名使用了关键字“name”(我试了试,我的没报错正常)

(3)本来要返回json的却忘了加@RequestBody

(4)ajax请求的连接后边忘了加参数


(5)前台传参时参数的顺序与后台实体类的各个属性的顺序不一致(我试了试,我的顺序改变无影响)

(6)如果是传了非实体bean属性的参数过来也会发生这种情况

原文地址:http://blog.csdn.net/chenleixing/article/details/43740759

转:方法三:表单数据不匹配

有时候表单数据和后台数据匹配不到也有可能是400.。。

大家移步地址:http://cuisuqiang.iteye.com/blog/2054234
http://my.oschina.net/fqt520/blog/264261 http://blog.csdn.net/lougnib/article/details/9973257
关于别的问题可以参考这里:http://www.iteye.com/topic/1137209

不过我的问题好像都不是,经过本菜鸟一点点调试,终于不负我啊。。。

结果如下所示:

前台:

$.ajax({

                        type:  'DELETE',

                        dataType: 'json',

                        url : './software/uploadFile/',

                        contentType : "application/json; charset=utf-8",

                        data : JSON.stringify(kwordgroups),

后台:

@ResponseBody

      @RequestMapping(method = RequestMethod.DELETE)

      public Map<String, Object> deletePatchPolicy(@RequestBody List<String> ids) {

成功解决问题

所以有时候细心是必要的,小弟第一次写博客,欢迎大家前来继续总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring MVC bad 400