第四节 案例
1、准备工作
和传统 CRUD 一样。
- 搭建环境
- 准备实体类
- 准备Service接口和实现类
2、功能清单
功能 | URL 地址 | 请求方式 |
---|---|---|
访问首页√ | / | GET |
查询全部数据√ | /movie | GET |
删除√ | /movie/2 | DELETE |
跳转到添加数据的表单√ | /movie/add/page | GET |
执行保存√ | /movie | POST |
跳转到更新数据的表单√ | /movie/2 | GET |
执行更新√ | /movie | PUT |
3、具体功能:访问首页
①流程图
②配置view-controller
③创建页面
<!DOCTYPE html>
首页
<a th:href="@{/movie}">显示电影列表</a>
4、具体功能:查询全部数据
①流程图
②handler 方法
@RequestMapping(value = “/movie”, method = RequestMethod.GET)
public String getMovieList(Model model) {
// 1.调用 Service 方法查询数据<br /> List<Movie> movieList = movieService.getAll();
// 2.将数据存入模型<br /> model.addAttribute("movieList", movieList);
// 3.返回逻辑视图<br /> return "movie-list";<br />}
③页面展示数据
电影ID | 电影名称 | 电影票价格 | 删除 | 更新 |
---|---|---|---|---|
抱歉!没有查询到数据! | ||||
跳转到添加数据的表单页面 | ||||
这里显示电影ID | 这里显示电影名称 | 这里显示电影价格 | 删除 | 更新 |
跳转到添加数据的表单页面 |
5、具体功能:删除
重点在于将 GET 请求转换为 DELETE。基本思路是:通过一个通用表单,使用 Vue 代码先把 GET 请求转换为 POST,然后再借助 hiddenHttpMethodFilter 在服务器端把 POST 请求转为 DELETE。
①创建通用表单
7、具体功能:执行保存
①流程图
②handler 方法
@RequestMapping(value = "/movie", method = RequestMethod.POST)<br /> public String saveMovie(Movie movie) {
movieService.saveMovie(movie);
return "redirect:/movie";<br /> }
8、具体功能:跳转到更新数据的表单
①流程图
②handler 方法
@RequestMapping(value ="/movie/{movieId}", method = RequestMethod.GET)<br /> public String toEditPage(@PathVariable("movieId") String movieId, Model model) {
Movie movie = movieService.getMovieById(movieId);
model.addAttribute("movie", movie);
return "movie-edit";<br /> }
③页面表单回显
9、具体功能:执行更新
①流程图
②handler 方法
@RequestMapping(value = “/movie”, method = RequestMethod.PUT)
public String updateMovie(Movie movie) {
movieService.updateMovie(movie);
return "redirect:/movie";<br />}