发表于: 2018-01-10 23:25:19
1 629
今天做的事情:主要就是踩坑.....
这里我必须检讨并重新审视一下,之前一直被忽略的一个关键部分,pom.xml,mavan项目的核心配置文件....
起因是这样子的:今天早上我接着昨天的内容,把SpringMVC的一些内容都给做了,没想到下午在做增加板块时,遇到了一个致命错误:
HTTP Status 500 - Request processing failed; nested exception is java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
因为任务一我做了三个版本,单元格测试也做烂了,所以很自信地相信任务一代码没有什么关键性差错,然后我下午排除了半天有关SpringMVC的内容,依然没有解决……后来在师兄们的帮助下终于发现了关键性错误:有关pom.xml中添加依赖包的版本问题......
原来是因为Mybatis的版本过低,某些操作(删除/插入/更新等一些会影响数据库内容的操作)返回的返回值(影响的行数)必须是Integer!void bool long Boolean Long什么的统统都不行!如果非要这样子写,插入倒是成功了,但是尝试返回的时候,会抛上面那个异常!
直到那时候,我才突然想起来,我任务二和任务一pom.xml是不一样的....我任务二的pom.xml蓝本是网上抄的...有些版本太低了....当初我自己也踩过一些坑,也没有引起太大重视,直到今天浪费半天时间....所以我今天在日报的开头特地突出说明这一块的内容,总结一下之前有关pom.xml踩过的坑.....
1.Mybatis版本过低 如上所示。
2.JDBC的Driver版本过低,使用Druid连接池会报空指针异常。
3.Spring核心包版本(特别是test这个依赖包)尽量一致,而且尽量只加必要的,不然会报错。
4.build标签里面显式配置一些配置文件的目录位置,不然有可能找不到...
5.可以指定idea源为1.8,排除一些差错
其他的我会在以后的学习中逐渐补充完善,今天这个算是一个教训了。
接下来汇报一下今天早上做的东西:
首先是学习了REST接口,写了controller层的三个功能:
这里的RequestMapping昨天也有说过,是和springMVC.xml中的
mvc:annotation-driven
标签相互对应的,相当于url经过前端控制器后来到controller层解析,在这里完成方法体的选择。这里详细说明下往数据库里增加数据的操作,首先,输入网址http://localhost:8080/task2/newone,选择addANewStudent这个方法体,然后指向/WEB-INF/jsp/aNewStudent.jsp/这个文件(因为我在springMVC.xml中设置缩写了,所以这里写中间的aNewStudent就行了),然后解析,送到浏览器展示:
这里要注意的是,我们首先要得到这里视图,才能往这里填写数据,所以必须先设计一个GET属性的方法,拿到这个视图。这个视图对应的.jsp文件源码如下:
这里有个type为submit的按钮“提交”,点一下,就会触发上面的那句代码:
<form method="POST" action="/task2/middle"><!--指向的是路径名称-->
相当于代码自动帮我们在浏览器里面输入http://localhost:8080/task2/middle
然后到controller层再被方法tryToAdd捕获,尝试通过service层进行添加记录的操作,然后再返回一个视图。在这个视图里面我们可以设置延迟自动跳转,回到主页。
Tips:
1. @PathVariable 标签和url中的占位符{id}对应 如果想重命名属性名 可以在标签后进行额外配置,比如:
@PathVariable("myid")
2. 关于ModelAndView返回类型还可以继续优化,详细的明天做出来
明天要做的事情:继续任务二。
今天的收获:端正态度,增强了处理异常的意识。
评论