今天完成的事情:
16.Post时,对比用Http Body接收参数,用param接收参数的区别,分别描述两种方式的使用场景
17.用Spring messageSource 配置错误信息,在接口处做校验,根据错误的类型返回对应的错误信息
明天计划的事情:
18.配置Nginx,配置域名指向Resin,本地配置Host,通过域名在浏览器,Postman等测试数据
深度思考
遇到的问题:
错误原因:
主键自增的表进行了同主键的重复插入,也就是常说的主键冲突。
解决方案:
1、根据个人具体场景,不重复插入数据即可
2、插入数据的时候,不设置主键的值
3、插入数据的时候使用insert ignore ,保证已有记录便不再插入
收获:
1.接受参数,这个是程序上的区别
2.了解如何用Http Body接收参数,param接收参数
3.然后再来对比
先用@RequestParam接收参数,接受参数用POST
了解@RequestParam注解的使用原理
目前感觉和@RequestBody区别不大
运行报错
运行@RequestBody对比,成功添加,说明语法没有问题
报错:所需的学生参数“Student”不存在 浏览器参数没有传过来,方法没有收到参数
@RequestParam这个注解找了几本书,字影都没看到。在网上搜索还是看太懂,还是看视频吧
空指针错误,数据传输不进来, 因为我请求是以JSON请求的,参数在body里, @RequestParam无法获取body中的参数,可以用 @RequestBody获取body中的参数
想要获取参数, postman的header就得改
还有几种办法
1.form-date
2.Params
3. 或者直接在url上拼 xxxx.xxx.xxx?a=xxx&b=xxxx
依旧空指针报错
发现我加上这个的话, 就会把我的model拆开,id,name分开参数接收,直接去掉
当方法参数没有用@RequestParam修饰时, 那么会默认绑定同名的参数.
意思就是 model不用注解的做参数接收,会把它当成一个map看一样的, 有哪些属性就允许接收哪些参数
运行成功
总结
1.在GET请求中,不能使用@RequestBody。
2.在POST请求,可以使用@RequestBody和@RequestParam
@RequestBody一般用于json批量传入数据,@RequestParam不能收到body中json的数据
====================================================
用Spring messageSource 配置错误信息,在接口处做校验,根据错误的类型返回对应的错误信息
1. 学习 messageSource
书面定义:
messageSource是一个接口,它定义了几种解决消息的方法。 ApplicationContext接口扩展了此接口,以便所有应用程序上下文都能够解析文本消息。 应用程序上下文将消息解析委托给确切名称为messageSource的bean。
中文乱码
重新运行
我觉得messageSource作用:就直接告诉那里出了问题,你有什么没做,类似在其他网站没写密码,点登录,就会告诉用户没输密码。
============================================
了解Restful风格
/**
* delete接口
*
* @param id
* @return
*/
@RequestMapping(value = "/DELETEStudent/{id}", method = {RequestMethod.DELETE, RequestMethod.GET})
public @ResponseBody
Map<String, Object> delete(@PathVariable("id") int id) {
//
if (null == studentService.selectById(id)) {
System.out.println("NULL");
return Restful.set(404, messageSource.getMessage("delete.null", null, null));
} else {
Student student = new Student();
student.setId(id);
studentService.deleteById(student);
return Restful.set(200, "删除数据成功");
}
}
====================================================
任务进度:任务2步骤 16
任务开始时间:2020-11-30
预计结束时间:2020-12-23
评论