发表于: 2017-06-26 21:48:14
2 1107
今天
1. 学习了Jetty服务器搭建的方法,在控制台使用Jetty跑了程序,但并不明白比Tomcat好在什么地方(后来发现在IDEA里面可以直接点Jetty:run好方便)。
2. 学习了如何使用Postman,对Restful接口进行测试,如何发送不同类型的请求,如何添加请求中的参数。
3. 因为各种路径问题,Eclipse上的项目又损坏了,于是安装了IDEA××版,导入了Eclipse上的项目(以Maven项目的形式),发现居然可以直接跑,完全不需要上手,各种东西基本都给你配好了,从此我也加入了IDEA党!
4. 在搭建好各种环境后,开始完善昨天的代码(即restful controller),实现了一些更多的功能,以应对更多的情况,具体如下。
首先针对问题最大的PUT(update),有很多的可能性,在学习了如何使用@ModelAttribute 和 @RequestParam 后,成功的应对了更多PUT的情况:1. 没有ID(新增一个user)2. 有ID但是数据库里没这个人(新增一个user,但使用自增id)3. 有ID,也有这个人,但是只提供部分属性(提供的属性更改,不提供的属性保持数据库中的不变)4. 在Service层增加了update time的输入,禁止了create time的输入。对其他的也有一些小修小补,任务2基本算是完成了。
代码如下:
@Controller
public class UserController {
@Autowired
private GenericUserService userService;
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable("id") int id, Model model){
User user = userService.getUserByID((long) id);
model.addAttribute("user", user);
return "MyJspDemo";
}
@RequestMapping("/users")
public String getAllUsers(Map<String, Object> map){
map.put("users", userService.getAllUsers());
return "list";
}
@RequestMapping(value="/user", method=RequestMethod.POST)
public String addUser(User user){
userService.insertUser(user);
return "forward:/users";
}
@ModelAttribute
public void getUserBefore(@RequestParam(value="id", required = false) Integer id, Map<String, Object> map){
if(id != null){
if(userService.getUserByID((long)id) != null){
map.put("user", userService.getUserByID((long)id));
}
}
}
@RequestMapping(value="/user", method=RequestMethod.PUT)
public String update(User user) {
if (user.getId() != null) {
if (userService.getUserByID(user.getId()) != null) {
userService.updateUser(user);
}
else{
userService.insertUser(user);
}
}
else {
userService.insertUser(user);
}
return "redirect:/users";
}
@RequestMapping(value="/user/{id}", method=RequestMethod.DELETE)
public String deleteUser(@PathVariable("id") Integer id){
if(id != null){
userService.deleteUserByID((long)id);
}
return "redirect:/users";
}
}
效果(数据库保留3个人):
GET:
POST 一个张三:
DELETE 张三:
PUT(id 1 为李四; id 10 为李四):
问题:
1. 虽然是POST,但是为什么参数都在URL里面,不是GET请求的参数才在URL里面吗。
2.部分返回重定向的页面错误,但是数据还是插进去了。
3. MyBatis的Dao不是在xml文件实现的吗,里面只能写sql语句,如何实现更新时间?我是没办法就在Service层实现的,但是觉得应该在Dao里面实现。
明天:进行任务2收尾工作,学习任务3需要的新知识。
总结:IDEA大法好!
评论