HTTP 400 Problem accessng /xxx/xxx Reason:bad request Powered by jetty://

背景:本地jetty启动应用,测试一个页面接口时候报错:

在chrome浏览器中的network里查看response信息如下:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<title>Error 400 Bad Request</title>

</head>

<body><h2>HTTP ERROR 400</h2>

<p>Problem accessing /xxx/xxxx/xxxxxx. Reason:

<pre>    Bad Request</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>                                               

<br/>  。。。。。。。

 

解决方案:一开始看到http 400 Problem accessing /xxx/xxxx ,还以为是客户端无法访问后台指定路径的后台接口,原谅我懵逼了一波,错以为是404了,,,,

这里记录一下400错误码的场景

在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里(注意:并不是找不到指定路径的接口,找到了,但由于某种原因无法正常调通这个接口):

原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

         2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

这里,我遇到的场景是对应第一点,前端传递一个日期格式的数据到后台,但是前端空值的时候是字符串类型的,而我后台接口上写的实体类的字段的类型是java.util.Date  ,前后端的数据的字段类型不匹配,导致无法封装,从而前端页面无法调通后台接口,报http 400 bad request;

那么,解决前端传递时间类型的数据到后台的冲突问题,有2中方法:

 第一:把后台的字段的类型从java.util.Date更改成java.lang.String类型

第二:在后台的Date类型的字段上加上注解--- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss"),自动把前端的String类型转化为后台Date类型来封装

(org.springframework.format.annotation.DateTimeFormat)

这里,由于其他地方的逻辑代码已经封装好了,所以使用第二种方法,直接加上注解@DateTimeFormat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值