发表于: 2017-11-02 22:33:50
1 935
今日完成的事情:
今天把任务二结束了。上次把ssm框架搭建完成,但是没有一点restful风格,今天把restful风格加上去了,但是完成完成的不是很好。
今天修改过的controller层,对应的增删改查操作分别对应了get,post,delete,put四种方法:
//所有用户信息
@RequestMapping(value = "/user",method = RequestMethod.GET)
public String listUser(Model model) {
List<User> list = userService.queryAllUser();
model.addAttribute("list", list);
logger.info("所有用户信息");
return "listUser";
}
展示所有用户信息,用的get方法。
//跳转到新增用户页面
@RequestMapping(value = "forAddUser",method = RequestMethod.GET)
public String addUserForm(){
logger.info("新增用户");
return "addUser";
}
//添加用户页面
@RequestMapping(value = "/user",method = RequestMethod.POST)
public String add(Model model,User user) {
logger.info(user.toString());
userService.add(user);
logger.info("添加用户成功");
model.addAttribute("user", user);
return "redirect:/user";
}
新增用户,这里用了一个跳转增加用户信息页面的方法,增加用户信息页面用的post方法。
//跳转到修改用户页面
@RequestMapping(value = "forUpdateUser",method = RequestMethod.GET)
public String updateUserForm(){
return "updateUser";
}
//修改用户页面
@RequestMapping(value = "/user",method = RequestMethod.PUT)
@ResponseBody
public String update(User user){
logger.info(user.toString());
if(userService.queryUserById(user.getId())!=null){
userService.update(user);
}else {
return "error";
}
return "redirect:/user";
}
修改用户信息,这里也用了一个跳转到修改用户页面的方法,修改用户信息用的是put方法。
//删除用户
@RequestMapping(value = "/user/{id}",method = RequestMethod.DELETE)
public String deleteUser(@PathVariable int id) {
logger.info("要删除用户ID为:"+id);
userService.delete(id);
logger.info("删除用户成功");
return "redirect:/user";
}
删除用户,不用跳转页面,直接用的delete方法。
在springMVC中是支持put和delete方法的,但是HTML不支持。需要在web.xml中配置一个过滤器,过滤隐藏域。
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
<init-param>
<param-name>methodParam</param-name>
<param-value>_method</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
同时jsp页面的配置:
<form method="post" action="${ctx}/user/${u.id}">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除"/>
</form>
用post方法转换成delete方法。
同理:
<form action="${ctx}/user" method="post">
<input type="hidden" name="_method" value="PUT">
用post方法转换成put方法。
这是两个跳转页面的form表头:
<form method="get" action="${ctx}/forAddUser">
<input type="submit" value="新增用户"/>
</form>
<form method="get" action="${ctx}/forUpdateUser">
<input type="submit" value="修改用户"/>
</form>
也就是这两个跳转页面让我的restful有点不完美。
最终的页面展示:
点击新增用户和修改用户会跳转到新增用户和修改用户页面:
随便添加一名用户,打印日志如下:
任务二算是告一段落了,但是还是有好多知识以后要慢慢学习,慢慢消化。
明日计划的事情:
完善一下任务二,开始任务三。
遇到的困难:
配置隐藏域过滤器,百度解决。
收获:
通过任务二,自己会搭建ssm框架,然后对于过滤器,监听器的配置也算是搞清楚了一些。
任务开始时间:2017/10/18
预计完成时间:2017/10/25
延期:延期8天
延期原因:请假5天,自己底子薄弱,任务二进行的比较满。11/2号完成任务二。
下次预计完成时间:2017/11/2
完成时间:2017/11/2
禅道:http://task.ptteng.com/zentao/project-task.html
评论