踩坑!!400(bad request)的解决方案

最近在做一个ssm+shiro的在线组卷,在线考试平台时,我在考生点击交卷按钮后发送一个ajax请求给后端,完成交卷,但是前端却提示如下
在这里插入图片描述

ajax请求如下:

url:'jiafen?content='+content+'&myselect='+val+"&examId="+'${sessionScope.thisenexamId}'+'&username='+'${user.username}'

好家伙400,然后我就一顿百度,网友说是什么请求参数的问题,参数个数不匹配,请求无法被识别,我都尝试过一遍后,并没有解决问题
我打开idea的控制台,他提示错误如下

Failed to bind request element:
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException:
Failed to convert value of type ‘java.lang.String’ to required type
‘int’; nested exception is java.lang.NumberFormatException: For input
string: “jiafen”

可是我的请求里根本没有日期转换啥的问题

然后我问了我的老师,他说是请求参数的问题,说是请求的jiafen也被识别成了字符串

我恍然大悟,打开请求地址一看,果然,请求路径是
localhost:8080/anexam/79/jiafen?content=。。。。。
然而我在controller层的requestMapper却是这样写的

@ResponseBody    
@RequestMapping(value = "/jiafen",method = RequestMethod.GET)    
public void  jiafen(HttpServletRequest request) {}

我直接原地吐血,原来是请求路径压根不对

一个是在/anexam/79后面追加jiafen请求
一个是在8080下面直接请求

但是我是考生访问试卷,所以每次访问的url是不一样的,所以,我把前端的ajax请求前面加一个/就解决了400的问题

如下:

$.ajax({
url:'/jiafen?XXX='+xxx,
.....
})

之前是这样的:

$.ajax({
url:'jiafen?XXX='+xxx,
.....
})

唉!!找bug真不容易,找了几个小时,一个惨痛的教训

当然,每个人遇到的400,对应的解决方法都会不一样,以上思路仅供参考!

你可能感兴趣的:(JavaEE,java常见报错以及解决方案,ajax)