SpringBoot超详细笔记(整合SSM附源码)

tech2025-02-26  14

SpringBoot超详细笔记(整合SSM附源码)

引言:

       本文主要分享了有关SpringBoot相关的知识,包括:SpringBoot的简介、SpringBoot环境的搭建、简单是SpringBoot案例、lombok的简单应用、在SpringBoot中加入HTML页面时的操作、SpringBoot的目录解析、SpringBoot整合SSM_html+vue+jquery(附源码)、thymeleaf模板的简述及使用、SpringBoot整合SSM_thymeleaf(附源码);

文章目录

SpringBoot超详细笔记(整合SSM附源码)1. SpringBoot简介2. SpringBoot环境的搭建2.1 首先创建Maven项目2.2 GVA坐标2.3 在Maven项目中加入SpringBoot2.4 选择构建项目的类型_aliyun2.5 项目描述2.6 指定SpringBoot版本和需要的依赖本项目选择2.1.14版本,加入了Lombok、Spring Web、Thymeleaf依赖 2.7 编写Controller2.8 项目运行2.8.1 运行启动类的main方法2.8.2 maven命令 2.9 结果界面 3. lombok应用_慎用3.1 lombok简介3.2 添加IDEA对lombok的支持在setting中搜索lombok,安装 3.3 部分注解的使用 4. 加入HTML页面4.1 编写index.html4.2 编写success页面4.3 编写初始化页面4.4 编写UserInfo4.5 编写UserInfoController4.6 结果界面 5. SpringBoot的目录结构6. xml与html的区别联系7. SpringBoot整合SSM_html+vue+jquery7.1 创建数据库7.2 编写实体类7.3 编写StudentMapper.java7.4 编写StudentMapper.xml7.5 修改SpringbootSsmApplication7.6 编写StudentService7.7 编写StudentServiceImpl7.8 编写ViewController7.9 编写StudentController7.10 编写showAllStudent7.11 编写addStudent7.12 结果展示 8. thymeleaf8.1 thymeleaf简介8.2 thymeleaf应用8.2.1 需加入依赖8.2.2 增加头文件8.2.3 动态替换掉静态数据 9. SpringBoot整合SSM_thymeleaf9.1 创建数据库9.2 编写实体类9.3 编写StudentMapper.java9.4 编写StudentMapper.xml9.5 修改SpringbootSsmApplication9.6 编写StudentService9.7 编写StudentServiceImpl9.8 编写StudentController9.9 编写showAllStudent9.10 编写addStudent9.11 编写updateStudent9.12 结果展示

1. SpringBoot简介

       SpringBoot设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置;SpringBoot不是一门新技术,只是将Spring、SpringMVC等封装起来,就是一个工具集;

SpringBoot特点:

不需要模板化的配置整合三方框架时,只需要导入相应的starter依赖包,会自动整合默认只有一个.properties是我配置文件部署工程时采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置SpringCloud需要建立在SpringBoot的基础上

2. SpringBoot环境的搭建

2.1 首先创建Maven项目

2.2 GVA坐标

2.3 在Maven项目中加入SpringBoot

2.4 选择构建项目的类型_aliyun

2.5 项目描述

2.6 指定SpringBoot版本和需要的依赖

本项目选择2.1.14版本,加入了Lombok、Spring Web、Thymeleaf依赖

2.7 编写Controller

2.8 项目运行

2.8.1 运行启动类的main方法

2.8.2 maven命令

mvn spring-boot:run

2.9 结果界面

3. lombok应用_慎用

3.1 lombok简介

          lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些Java类中的大量样板代码,lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法;

3.2 添加IDEA对lombok的支持

在setting中搜索lombok,安装

3.3 部分注解的使用

@Setter:生成Setting方法@Getter:生成Getter方法@NoArgsConstructor:生成无参构造@AllArgsConstructor:生成有参构造@Data :代替@Setter、@Getter、toString

4. 加入HTML页面

4.1 编写index.html

resources/templates下

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML页面</title> </head> <body> <h2>SpringBoot Html View</h2> <form action="add" method="POST"> UserName:<input type="text" name="username"/><br/> Password:<input type="password" name="password"/><br/> Tel:<input type="text" name="tel"/><br/> <input type="submit" value="add"/> </form> </body> </html>

4.2 编写success页面

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>成功界面</title> </head> <body> <h2>数据交互成功</h2> </body> </html>

4.3 编写初始化页面

当访问localhost:8080时显示该页面

package com.sx.kak.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * Created by Kak on 2020/8/31. */ @Controller public class PageController { @RequestMapping("/") public String showIndex(){ return "index"; } }

4.4 编写UserInfo

package com.sx.kak.vo; import lombok.*; /** * Created by Kak on 2020/8/31. */ @NoArgsConstructor //生成无参构造 @AllArgsConstructor //生成有参构造 @Data //代替@Setter、@Getter、toString public class UserInfo { private String username; private String password; private String tel; }

4.5 编写UserInfoController

package com.sx.kak.controller; import com.sx.kak.vo.UserInfo; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.List; /** * Created by Kak on 2020/8/31. */ @Controller public class UserInfoController { //接收表单数据 @RequestMapping(value="add",method=RequestMethod.POST) public String getUserInfo(UserInfo userInfo){ System.out.println(userInfo); return "success"; } //全查 @RequestMapping("/userInfo") @ResponseBody public ResponseEntity<List<UserInfo>> findUser(){ ArrayList<UserInfo> list = new ArrayList<>(); list.add(new UserInfo("kaka1","123456","123456")); list.add(new UserInfo("kaka2","123456","123456")); list.add(new UserInfo("kaka3","123456","123456")); return new ResponseEntity<List<UserInfo>>(list, HttpStatus.OK); } }

4.6 结果界面

5. SpringBoot的目录结构

6. xml与html的区别联系

xml与html区别与联系:

联系:二者均可以使用浏览器解析,都在内存中形成dom模型区别: xml:只能有一个root(根)节点xml:自定义标记;而html预定义标记xml:区分大小写,html不区分xml:中标记的属性值必须使用引号,而html可以不用xml:标记必须关闭;而html可以不关闭xml:不可以交叉嵌套

7. SpringBoot整合SSM_html+vue+jquery

7.1 创建数据库

CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(50) NOT NULL, sex VARCHAR(10) DEFAULT 'man', age VARCHAR(5) ) CHARSET = utf8;

7.2 编写实体类

在po包下编写实体类

package com.sx.kak.po; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Created by Kak on 2020/8/31. */ @Data @AllArgsConstructor @NoArgsConstructor public class Student { private int id; private String name; private String sex; private String age; }

7.3 编写StudentMapper.java

在mapper中编写StudentMapper

package com.sx.kak.mapper; import com.sx.kak.po.Student; import java.util.List; /** * Created by Kak on 2020/8/31. */ public interface StudentMapper { public List<Student> findAll(); public Student findOneById(int id); public void addStudent(Student student); public void updateStudent(Student student); public void deleteStudent(int id); }

7.4 编写StudentMapper.xml

在resources/mapping下编写

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sx.kak.mapper.StudentMapper"> <select id="findAll" resultType="com.sx.kak.po.Student"> select id,name,sex,age from student </select> <select id="findOneById" parameterType="int" resultType="com.sx.kak.po.Student"> SELECT id,name,sex,age FROM student WHERE id=#{id} </select> <insert id="addStudent" parameterType="com.sx.kak.po.Student"> insert into student (id,name,sex,age) VALUES (#{id},#{name},#{sex},#{age}) </insert> <update id="updateStudent" parameterType="com.sx.kak.po.Student"> UPDATE student set name=#{name},sex=#{sex},age=#{age} WHERE id=#{id} </update> <delete id="deleteStudent" parameterType="int"> DELETE FROM student where id=#{id} </delete> </mapper>

7.5 修改SpringbootSsmApplication

设置mapper扫描基础包路径

package com.sx.kak; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //设置mapper扫描基础包路径 @MapperScan(basePackages = {"com.sx.kak.mapper"}) public class SpringbootSsmApplication { public static void main(String[] args) { SpringApplication.run(SpringbootSsmApplication.class, args); } }

7.6 编写StudentService

在service下

package com.sx.kak.server; import com.sx.kak.po.Student; import java.util.List; /** * Created by Kak on 2020/8/31. */ public interface StudentService { public List<Student> findAllService(); public Student findOneStudentService(int id); public void addStudentService(Student student); public void updateStudentService(Student student); public void deleteStudentService(int id); }

7.7 编写StudentServiceImpl

在service/impl下

package com.sx.kak.server.impl; import com.sx.kak.mapper.StudentMapper; import com.sx.kak.po.Student; import com.sx.kak.server.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * Created by Kak on 2020/8/31. */ @Service//标注service实现对象有spring接管 public class StudentServiceImpl implements StudentService{ //注入mapper接口 @Autowired(required = false) private StudentMapper studentMapper; @Override public List<Student> findAllService() { List<Student> all = studentMapper.findAll(); return all; } @Override public Student findOneStudentService(int id) { Student oneById = studentMapper.findOneById(id); return oneById; } @Override public void addStudentService(Student student) { studentMapper.addStudent(student); } @Override public void updateStudentService(Student student) { studentMapper.updateStudent(student); } @Override public void deleteStudentService(int id) { studentMapper.deleteStudent(id); } }

7.8 编写ViewController

用于视图跳转

package com.sx.kak.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * Created by Kak on 2020/8/31. */ @Controller public class ViewController { @RequestMapping("/studentView") public String showList(){ return "showAllStudent"; } @RequestMapping("/addStudent") public String addStudent(){ return "addStudent"; } }

7.9 编写StudentController

业务控制层

package com.sx.kak.controller; import com.sx.kak.po.Student; import com.sx.kak.server.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by Kak on 2020/8/31. */ @Controller public class StudentController { //注入service接口 @Autowired(required = false) private StudentService studentService; //全查 @RequestMapping(value = "/students",method = RequestMethod.GET) @ResponseBody public ResponseEntity<List<Student>> findAllStu(){ List<Student> allService = studentService.findAllService(); if(allService!=null){ return new ResponseEntity<List<Student>>(allService, HttpStatus.OK); }else { return new ResponseEntity<List<Student>>(allService, HttpStatus.NOT_FOUND); } } //增加 @RequestMapping(value = "addStudents",method = RequestMethod.POST) public String addStu(Student student){ studentService.addStudentService(student); return "redirect:studentView"; } //单查 @RequestMapping(value = "findByIdStudents",method = RequestMethod.GET) @ResponseBody public ResponseEntity<Student> findByIdStu(@RequestParam("id") int id){ Student oneStudentService = studentService.findOneStudentService(id); if(oneStudentService!=null){ return new ResponseEntity<Student>(oneStudentService, HttpStatus.OK); }else{ return new ResponseEntity<Student>( HttpStatus.NOT_FOUND); } } //修改 @RequestMapping(value = "/updateStudents",method = RequestMethod.POST) @ResponseBody public ResponseEntity<Student> updateStu(@RequestBody Student student){ System.out.println(student); studentService.updateStudentService(student); return new ResponseEntity<Student>(HttpStatus.OK); } //删除 @RequestMapping(value = "deleteStudents",method = RequestMethod.GET) @ResponseBody public ResponseEntity<Student> deleteStu(@RequestParam("id") int id){ studentService.deleteStudentService(id); return new ResponseEntity<Student>(HttpStatus.OK); } }

7.10 编写showAllStudent

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>学生全查页面</title> </head> <script src="../js/jquery-3.3.1.js"></script> <script src="../js/bootstrap.min.js"></script> <script src="js/vue.min.js"></script> <link href="../css/bootstrap.min.css" rel="stylesheet"> <body> <div id="findAll"> <table cellspacing="1" border="1"> <tr> <th>ID</th> <th>NAME</th> <th>SEX</th> <th>AGE</th> <th>Action</th> </tr> <tr v-for="s in students"> <td> {{s.id}}</td> <td> {{s.name}}</td> <td> {{s.age}}</td> <td> {{s.sex}}</td> <td> <button type="button" @click="findOneById(s.id)">修改</button> <button type="button" @click="delectStudent(s.id)">删除</button> </td> </tr> </table> <a href="addStudent">增加</a> </div> <!--model wiondows模态 窗体--> <div class="modal" id="modalModify"> <div class="model-dialog" > <!--窗体部分--> <div class="modal-content"> <!--头部--> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">X</button> <h4 class="modal-title">学生信息修改:</h4> </div> <!--躯干--> <div class="modal-body"> <table id="table2" align="center"> <tr style="height:40px;"> <td align="right"><label>学生编号:</label>&nbsp;&nbsp;&nbsp;</td> <td><input type="text" name="id" class="form-control" readonly v-model="s.id" /></td> </tr> <tr style="height:40px;"> <td align="right"><label>学生姓名:</label>&nbsp;&nbsp;&nbsp;</td> <td><input type="text" name="name" class="form-control" v-model="s.name" /></td> </tr> <tr style="height:40px;"> <td align="right"><label>学生性别:</label>&nbsp;&nbsp;&nbsp;</td> <td><input type="text" name="sex" class="form-control" v-model="s.sex" /></td> </tr> <tr style="height:40px;"> <td align="right"><label>学生年龄:</label>&nbsp;&nbsp;&nbsp;</td> <td><input type="text" name="age" class="form-control" v-model="s.age" /></td> </tr> </table> </div> <!--尾部--> <div class = "modal-footer"> <button type="button" class="btn btn-default" data-dismiss ="modal">取消</button> <button type="button" class="btn btn-primary" id="updateStu">修改</button> </div> </div> </div> </div> </body> <script> var updates = new Vue({ el:'#table2' , data:{ s:"", }, }); var myObj = new Vue({ el: '#findAll', data: { students: [] }, methods: { findOneById: function (id) { alert(id); $.ajax({ type: "get", url: "/findByIdStudents?id=" + id, dataType: "json", success: function (data) { console.log(data); updates.s = data; } }); $("#modalModify").modal("show"); }, delectStudent:function(id) { $.ajax({ type: "get", url: "/deleteStudents?id=" + id, // dataType: 'json', success: function (data) { showStudent(); } }); } } }); $("#updateStu").click(function () { alert("发送请求"+JSON.stringify(updates.s)); $.ajax({ url:"/updateStudents", type:"post", data: JSON.stringify(updates.s), contentType:'application/json', // dataType:"json", success:function (data) { alert("修改成功!"); $("#modalModify").modal("hide");//关闭窗体 showStudent(); } }); }); $(function(){ showStudent(); }); function showStudent() { $.ajax({ url: 'students', type: 'GET', dataType: 'json', success: function (data) { myObj.students = data; } }) } </script> </html>

7.11 编写addStudent

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>增加页面</title> </head> <body> <form action="addStudents" method="POST"> ID:<input type="text" name="id"/><br/> NAME:<input type="text" name="name"/><br/> SEX:<input type="text" name="sex"/><br/> AGE:<input type="text" name="age"/><br/> <input type="submit" value="add"/> </form> </body> </html>

7.12 结果展示

8. thymeleaf

8.1 thymeleaf简介

         Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎,可以处理HTML、XML、JavaScript、CSS等;目的是提供优雅且高度可维护的模板创建方式,提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器等功能;

8.2 thymeleaf应用

8.2.1 需加入依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>

8.2.2 增加头文件

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org">

8.2.3 动态替换掉静态数据

可以用th标签动态替换掉静态数据

<!--thymeleaf操作--> <tr th:each="s:${students}"> <td th:text="${s.id}"></td> <td th:text="${s.name}"></td> <td th:text="${s.sex}"></td> <td th:text="${s.age}"></td> <td> <a href="findByIdStudents?id=10" th:href="@{findByIdStudents(id=${s.id})}">修改</a> <a href="deleteStudents?id=10" th:href="@{deleteStudents(id=${s.id})}">删除</a> </td> </tr> <!--vue操作--> <tr v-for="s in students"> <td> {{s.id}}</td> <td> {{s.name}}</td> <td> {{s.age}}</td> <td> {{s.sex}}</td> <td> <button type="button" @click="findOneById(s.id)">修改</button> <button type="button" @click="delectStudent(s.id)">删除</button> </td> </tr>

9. SpringBoot整合SSM_thymeleaf

9.1 创建数据库

CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(50) NOT NULL, sex VARCHAR(10) DEFAULT 'man', age VARCHAR(5) ) CHARSET = utf8;

9.2 编写实体类

在po包下编写实体类

package com.sx.kak.po; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Created by Kak on 2020/8/31. */ @Data @AllArgsConstructor @NoArgsConstructor public class Student { private int id; private String name; private String sex; private String age; }

9.3 编写StudentMapper.java

在mapper中编写StudentMapper

package com.sx.kak.mapper; import com.sx.kak.po.Student; import java.util.List; /** * Created by Kak on 2020/8/31. */ public interface StudentMapper { public List<Student> findAll(); public Student findOneById(int id); public void addStudent(Student student); public void updateStudent(Student student); public void deleteStudent(int id); }

9.4 编写StudentMapper.xml

在resources/mapping下编写

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sx.kak.mapper.StudentMapper"> <select id="findAll" resultType="com.sx.kak.po.Student"> select id,name,sex,age from student </select> <select id="findOneById" parameterType="int" resultType="com.sx.kak.po.Student"> SELECT id,name,sex,age FROM student WHERE id=#{id} </select> <insert id="addStudent" parameterType="com.sx.kak.po.Student"> insert into student (id,name,sex,age) VALUES (#{id},#{name},#{sex},#{age}) </insert> <update id="updateStudent" parameterType="com.sx.kak.po.Student"> UPDATE student set name=#{name},sex=#{sex},age=#{age} WHERE id=#{id} </update> <delete id="deleteStudent" parameterType="int"> DELETE FROM student where id=#{id} </delete> </mapper>

9.5 修改SpringbootSsmApplication

设置mapper扫描基础包路径

package com.sx.kak; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //设置mapper扫描基础包路径 @MapperScan(basePackages = {"com.sx.kak.mapper"}) public class SpringbootSsmApplication { public static void main(String[] args) { SpringApplication.run(SpringbootSsmApplication.class, args); } }

9.6 编写StudentService

在service下

package com.sx.kak.server; import com.sx.kak.po.Student; import java.util.List; /** * Created by Kak on 2020/8/31. */ public interface StudentService { public List<Student> findAllService(); public Student findOneStudentService(int id); public void addStudentService(Student student); public void updateStudentService(Student student); public void deleteStudentService(int id); }

9.7 编写StudentServiceImpl

在service/impl下

package com.sx.kak.server.impl; import com.sx.kak.mapper.StudentMapper; import com.sx.kak.po.Student; import com.sx.kak.server.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * Created by Kak on 2020/8/31. */ @Service//标注service实现对象有spring接管 public class StudentServiceImpl implements StudentService{ //注入mapper接口 @Autowired(required = false) private StudentMapper studentMapper; @Override public List<Student> findAllService() { List<Student> all = studentMapper.findAll(); return all; } @Override public Student findOneStudentService(int id) { Student oneById = studentMapper.findOneById(id); return oneById; } @Override public void addStudentService(Student student) { studentMapper.addStudent(student); } @Override public void updateStudentService(Student student) { studentMapper.updateStudent(student); } @Override public void deleteStudentService(int id) { studentMapper.deleteStudent(id); } }

9.8 编写StudentController

业务控制层

package com.sx.kak.controller; import com.sx.kak.po.Student; import com.sx.kak.server.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by Kak on 2020/8/31. */ @Controller public class StudentController { //注入service接口 @Autowired(required = false) private StudentService studentService; @RequestMapping("/addStudentView") public String addStudent(){ return "addStudent"; } //全查 @RequestMapping(value = "/students",method = RequestMethod.GET) public String findAllStu(Model model){ List<Student> allService = studentService.findAllService(); model.addAttribute("students",allService); return "showAllStudent"; } //增加 @RequestMapping(value = "addStudents",method = RequestMethod.POST) public String addStu(Model model,Student student){ studentService.addStudentService(student); return "redirect:students"; } //单查 @RequestMapping(value = "findByIdStudents",method = RequestMethod.GET) public String findByIdStu(Model model,int id){ Student oneStudentService = studentService.findOneStudentService(id); model.addAttribute("student",oneStudentService); return "updateStudent"; } //修改 @RequestMapping(value = "/updateStudents",method = RequestMethod.POST) public String updateStu(Model model,Student student){ studentService.updateStudentService(student); return "redirect:students"; } //删除 @RequestMapping(value = "deleteStudents",method = RequestMethod.GET) public String deleteStu(Model model, int id){ studentService.deleteStudentService(id); return "redirect:students"; } }

9.9 编写showAllStudent

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>学生全查页面</title> </head> <body> <div id="findAll"> <table> <tr> <th>ID</th> <th>NAME</th> <th>SEX</th> <th>AGE</th> <th>Action</th> </tr> <tr th:each="s:${students}"> <td th:text="${s.id}"></td> <td th:text="${s.name}"></td> <td th:text="${s.sex}"></td> <td th:text="${s.age}"></td> <td> <a href="findByIdStudents?id=10" th:href="@{findByIdStudents(id=${s.id})}">修改</a> <a href="deleteStudents?id=10" th:href="@{deleteStudents(id=${s.id})}">删除</a> </td> </tr> </table> <a href="addStudentView">增加</a> </div> </body> </html>

9.10 编写addStudent

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>增加页面</title> </head> <body> <form th:action="@{addStudents}" method="POST" th:object="${addStu}"> ID:<input type="text" name="id"/><br/> NAME:<input type="text" name="name"/><br/> SEX:<input type="text" name="sex"/><br/> AGE:<input type="text" name="age"/><br/> <input type="submit" value="add"/> </form> </body> </html>

9.11 编写updateStudent

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>修改页面</title> </head> <body> <form th:action="@{updateStudents}" method="POST" th:object="${student}"> ID:<input type="text" name="id" readonly th:field="*{id}"/><br/> NAME:<input type="text" name="name" th:field="*{name}"/><br/> SEX:<input type="text" name="sex" th:field="*{sex}"/><br/> AGE:<input type="text" name="age" th:field="*{age}"/><br/> <input type="submit" value="update"/> </form> </body> </html>

9.12 结果展示

最新回复(0)