控制器类
/** * 这是一个控制器类,相当于Servlet * @author wsh * */ @Controller //表示这是控制器类 public class PhoneController { @Autowired private PhoneRepository phoneService; /** * GET请求 * @return */ @RequestMapping("/") //请求路径是根路径 public String root() { ///return "redirect:/index"; //redirect表示重定向到/index return "admin/index"; } @RequestMapping("/mb") //请求路径是根路径 public String mb() { ///return "redirect:/index"; //redirect表示重定向到/index return "admin/mb"; } @RequestMapping("/add") //请求路径是根路径 public String add() { ///return "redirect:/index"; //redirect表示重定向到/index return "admin/add"; } @RequestMapping("/list") //请求路径是根路径 public String list(Model model) { model.addAttribute("phones", phoneService.findAll()); return "admin/list"; } @PostMapping("/phones/save") public String save(@Valid Phone phone,BindingResult result, Model model,RedirectAttributes redirectAttributes) { if(result.hasErrors()) { return "admin/add"; } phoneService.save(phone); redirectAttributes.addFlashAttribute("msg",ConstantUtil.MSG_SAVED); return "redirect:/list"; } @GetMapping("/edit/{id}") // {id}是占位符 public String showUpdateForm(@PathVariable("id") long id, Model model) { // @PathVariable 路径变量 Optional<Phone> phone = phoneService.findById((int) id); model.addAttribute("phone",phone.get()); return "admin/edit"; } @PostMapping("/update/{id}") public String updateUser(@PathVariable("id") long id, @Valid Phone phone, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "update-user"; } phoneService.save(phone); return "redirect:/list"; } @GetMapping("/delete/{id}") public String deleteUser(@PathVariable("id") long id, Model model) { phoneService.deleteById((int) id); return "redirect:/list"; } }
新增页面表单
<form class="form-horizontal" th:action="@{/phones/save}" method="post" > <div class="card-body"> <div class="form-group row"> <label for="inputEmail3" class="col-sm-2 col-form-label">品牌</label> <div class="col-sm-10"> <input type="text" class="form-control" name="brand" placeholder="品牌"> </div> </div> <div class="form-group row"> <label for="inputPassword3" class="col-sm-2 col-form-label">型号</label> <div class="col-sm-10"> <input type="text" class="form-control" name="model" placeholder="型号"> </div> </div> <div class="form-group row"> <label for="inputPassword3" class="col-sm-2 col-form-label">颜色</label> <div class="col-sm-10"> <input type="text" class="form-control" name="color" placeholder="颜色"> </div> </div> </div> <!-- /.card-body --> <div class="card-footer"> <div style="width:250px;margin: 0 auto"> <button type="submit" class="btn btn-info" style="width: 250px">提交</button> </div> </div> <!-- /.card-footer --> </form>
查询所有 列表页面
<table class="table table-hover"> <thead> <tr> <th>ID</th> <th>品牌</th> <th>型号</th> <th>颜色</th> <th>操作</th> <th>操作</th> </tr> </thead> <tbody> <tr th:each="phone : ${phones}"> <td th:text="${phone.id}"></td> <td th:text="${phone.brand}"></td> <td th:text="${phone.model}"></td> <td th:text="${phone.color}"></td> <td><a th:href="@{/edit/{id}(id=${phone.id})}">修改</a></td> <td><a th:href="@{/delete/{id}(id=${phone.id})}">删除</a></td> </tr> </tbody> </table>
修改单个页面
<form class="form-horizontal" th:action="@{'/update/'+${phone.id}}" th:object="${phone}" method="post" > <div class="card-body"> <div class="form-group row"> <label for="inputEmail3" class="col-sm-2 col-form-label">品牌</label> <div class="col-sm-10"> <input type="text" class="form-control" name="brand" placeholder="品牌" th:value="*{brand}"> </div> </div> <div class="form-group row"> <label for="inputPassword3" class="col-sm-2 col-form-label">型号</label> <div class="col-sm-10"> <input type="text" class="form-control" name="model" placeholder="型号" th:value="*{model}"> </div> </div> <div class="form-group row"> <label for="inputPassword3" class="col-sm-2 col-form-label">颜色</label> <div class="col-sm-10"> <input type="text" class="form-control" name="color" placeholder="颜色" th:value="*{color}"> </div> </div> </div> <!-- /.card-body --> <div class="card-footer"> <div style="width:250px;margin: 0 auto"> <button type="submit" class="btn btn-info" style="width: 250px">提交</button> </div> </div> <!-- /.card-footer --> </form>