初学spring遇到的400问题

这几天在学习spring,练习的时候遇到这么一个问题。

HTTP Status 400 -


type Status report

message

description The request sent by the client was syntactically incorrect.


Apache Tomcat/7.0.69

控制台没有任何显示,看到这个的我也是一脸懵逼。后来使用log打印信息,后来用log打印的时候出现了这么一个异常。
DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver  - Resolving exception from handler [com.huaxin.controller.BookController@6402ff64]: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "book_update"
我这一看不是类型转换异常吗,不对啊spring的依赖注入是支持类型之间的转化的。后经过百度发现
了这么些东西 Failed to convert value of type 'java.lang.String' to required type 'int';  这种出现的原因是你的pojo类中的参数名字和表单中参数的名字不一致。
我又对比了一下没有任何不一致,然后又是百度,各式各样的回答。导致我越来越偏离正确的道路。
后来我又回过头认真的看了一下日志信息。终于发现了问题
Matching patterns for request [/book_edit/book_update] are [/book_edit/{id}]
7895 [http-bio-80-exec-6] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping  - Matching patterns for request [/book_edit/book_update] are [/book_edit/{id}]
其实已经说的很清楚了 匹配url的时候 将book_update这个映射赋值给了 id
也就出现了不能讲字符串转化成int类型的typeMisMatchException
其实就是我的url映射写错了 原先的‘book_update’应该改为“/应用程序名/bookupdate”的绝对路径
可是我在添加书籍的时候的url映射也是“”book_input”这种类似写法的  我以为提交表单时会自动映射到相应的RequestMapping("/")里面的value 其实不然
原先增加书籍的时候的url是这样的 http://localhost/SpringTest3/book_input  然后提交表单的时候的form是这样的
<form:form commandName="book" action="book_save" method="post">
修改书籍的url是这样的http://localhost/SpringTest3/book_edit/1       提交表单的时候我是这样的(错误的写法)<form:form commandName="book" action="book_update" method="post">
经过比较发现当你提交的时候 url会默认网上一层  于是我的url就是这样的http://localhost/SpringTest3/book_edit/book_update  而正确的应该是http://localhost/SpringTest3/book_update 于是就出现了上面将url作为参数传入的可笑bug

几经思考 其实我如果当时能认真的看一下 好好思考一下就不会浪费那么多时间了,我觉得不只是我,很多人再出现问题的时候直接将错误信息复制百度,有的时候运气好能找到,然后虽然很多错误提示是一样的,但出错的方式是不一样的,就好比一个人感冒的症状是一样的,但是病因确实不同的。
所以以后出现问题的时候
1仔细观察log打印的提示,思考可能的原因。
2不可断章取义,只是将出现的某一个错误信息进行百度。应该中和所有出现的问题找出中心错误进行百度
3学会百度,百度答案各式各样,有选择的查找出适合自己的答案,切不可浪费时间在百度上,独立思考,推敲分析才是主要的。
4当你的所推想的解决法案依然有种种疑点 那么这个方法一定是错的,就不要浪费时间去尝试。
5切记先入为主的想法,这种想法会让你陷入死胡同,不要仅仅凭借错误信息就想当然的认为是某种错误,这种思想是及其可怕的。
6注意细节,细节决定成败,任何引起你一点点疑问的信息都不要忽视。

再看看我出现的问题  如果我不是早早的先入为主以为是自己的类型不匹配的问题 ,而是仔细看一下log打印的信息就不会浪费一上午的时间,想想就郁闷。
一旦你陷入为主的去思考问题的时候,哪怕答案放在你眼前,你也会选择性忽视。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值