浏览器发送请求 localhost:8080/home
通过thymeleaf (xmlns:th=“http://thymeleaf.org”>)和model.addAttribute实现 服务器和网页的连接
通过userDao里面的jdbcTemplate的方法实现服务器和数据库的操作
spring MVC 其实是通过服务器作为中介实现页面和数据库的数据交互

层级结构

首先配置pom(导入jar包)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version>    //spring boot 的父类<relativePath/> <!-- lookup parent from repository --></parent><groupId>com.tl</groupId><artifactId>idea_demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>idea_demo</name><description>Demo project for Spring Boot</description>
<properties><java.version>1.8</java.version>
</properties><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools   rebushu--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><!--兼容老版本--><dependency><groupId>net.sourceforge.nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.22</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java   数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid   阿里 连接池--><!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc  JDBC-->  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>
</dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins>
</build>

配置properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver //配置驱动
spring.datasource.username=root
spring.datasource.password=******
spring.datasource.url=jdbc:mysql:///test  //数据库连接池spring.thymeleaf.prefix=classpath:/templates/#thymeleaf
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
spring.thymeleaf.mode=LEGACYHTML5
#hot deploy
spring.thymeleaf.cache=false
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**logging.level.com.tledu.sboot_thyme=debug

1.Controller部分

package com.tl.idea_demo.controller;import com.tl.idea_demo.dao.UserDao;import com.tl.idea_demo.entity.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;

/@Controller注解
在SpringMVC 中,控制器Controller 将用户请求的数据封装为一个model,然后把该model返回给对应的网页展示
,只需使用@Controller 标记一个类是Controller ,@RequestMapping (映射路径如"/home")和@RequestParam (映射参数)
这样的Controller 就能被外界访问到。通过在return"/home "可以将各种操作的结果返回到浏览器
/

public class MyConller{@Autowiredprivate UserDao userDao;/*通过实例化userDao来调用userDao的方法(userDao已经通过jdbcTemplate连接上了数据库)*/@RequestMapping("/home")/* 网页的localhost:8080/home跳转到这*/public  String home (Model model){model.addAttribute("users",userDao.findAll());return "home";}@ResponseBody/*这注解表明操作完直接在该页面显示删除成功或失败*/@RequestMapping("/delete") /*点删除按钮跳转到这*/public String delete(int id){int a=userDao.deletebyid(id);/*调用userDao的deletebyid方法根据id进行删除操作*/if(a>0){return "删除成功"+"<a href='/home'>返回主页</a>";}else{return "删除失败"+"<a href='/home'>返回主页</a>";}}@RequestMapping("/update")/*点修改跳转到这*/public String update(@RequestParam int id ,Model model){  /*映射前端的参数*/User user=userDao.finduserbyid(id); /*调用userDao的finduserbyid通过id找到该对象*/model.addAttribute("user",user);/*将得到的对象通过model的方法映射到"user"*/return "update";/*将该对象送到网页  跳转看update网页(只是回显  现在还没修改)*/}@ResponseBody@RequestMapping("/updateAction")  /*通过表单的action="/updateAction" 跳转到这*/public String updateAction (User user){int row=userDao.update(user); /*这里通过调用userDao的update进行对数据库的内容的修改*/if(row>0){return "修改成功"+"<a href='/home'>返回主页</a>";}else{return"修改失败"+"<a href='/home'>返回主页</a>";}}}

2.userdao部分
userdao 通过private JdbcTemplate jdbcTemplate实例化对象 用jdbcTemplate的方法连接数据库进行增删改查;

package com.tl.idea_demo.dao;import com.tl.idea_demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;import java.util.List;@Repository
public class UserDao {@Autowired
private JdbcTemplate jdbcTemplate;  /*通过jdbcTemplate的方法对数据库操作*/public List<User> findAll(){ /*查询语句将表的很多个对象放入List集合*/return jdbcTemplate.query("select * from person",new Object[]{},new BeanPropertyRowMapper<User>(User.class));
}
public int update(User user){/*进行数据库的update操作*/String sql="update person set `name`=?,salary=?,address=? where id=?";return jdbcTemplate.update(sql,user.getName(),user.getSalary(),user.getAddress(),user.getId());
}public int   deletebyid(int id){/*通过id找到该对象实现删除操作*/BeanPropertyRowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);String sql="delete from person where id=? ";int a= jdbcTemplate.update(sql,id);return a;}public User finduserbyid(int id){/*在进行修改操作之前先通过id回显这个id对应对象的每个属性*/BeanPropertyRowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);String sql="select * from person where id=? ";return  jdbcTemplate.queryForObject(sql,rowMapper,id);}}

3.实体类部分

package com.tl.idea_demo.entity;/*** Created by dwz on 2018/12/11.*/
public class User {private int id;private String name;private double salary;private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "user{" +"id=" + id +", name='" + name + '\'' +", salary=" + salary +", address='" + address + '\'' +'}';}
}

3home网页部分

<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">
<head><meta charset="UTF-8" /><title>Titlsssse</title>
</head>
<body>
<table cellspacing="0" cellpadding="0" width="70%" border="1px"><tr><th>id</th><th>name</th><th>salary</th><th>address</th><th>modify</th><th>delete</th></tr><tr th:each="user:${users}"> /*将select得到的很多对象的List集合遍历到网页的表格中*/<td th:text="${user.id}"></td><td th:text="${user.name}"></td><td th:text="${user.salary}"></td><td th:text="${user.address}"></td><td><a th:href="@{'/update?id=' + ${user.id}}">修改</a></td><td><a th:href="@{'/delete?id='+${user.id}}">删除</a></td></tr></table></body>
</html>

4.update网页部分

<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">
<head><meta charset="UTF-8"><title>update title</title>
</head>
<body>
<form action="/updateAction" method="post"><table cellpadding="0px" cellspacing="0px" border="1px" width="50%"><tr><td>id</td><td><input type="text" th:value="${user.id}" name="id"></td></tr><tr><td>name</td><td><input type="text" th:value="${user.name}" name="name"></td></tr><tr><td>salary</td><td><input type="text" th:value="${user.salary}" name="salary"></td></tr><tr><td>address</td><td><input type="text" th:value="${user.address}" name="address"></td></tr><tr><td><input type="submit" value="提交"></td><td><input type="reset" value="重置"></td></tr></table>
</form></body>
</html>

5.演示部分
首先登录网页localhost:8080/home

点击修改进入修改界面

将id为1的name修改为杜 点击提交

此时可以通过超链接返回主页
查看自己的数据库发现数据库的内容确实已经修改成功

6.剩下的网页部分的润色就很简单了
需要打包带走的可以留下邮箱

数据库和网页之间的数据交互相关推荐

  1. 【Ajax】实现网页与服务器之间的数据交互

    Per aspera ad astra 循此苦旅,以觅繁星 通过这篇文章带你了解网页与服务器之间的数据交互的原理与使用方法. 一.服务器的基本概念 在实现数据交互之前先了解服务器的概念,有助于我们之后 ...

  2. 实现网页与服务器之间的数据交互

    目录 一.Ajax 1.1.什么是Ajax? 1.2.jQuery中的Ajax 1.$.get()从服务器中获取数据 ✨ 2.$.post()从服务器中获取数据 ✨ 3.$.ajax()从服务器中获取 ...

  3. java与c/c++之间的数据交互-----jni点滴

    2019独角兽企业重金招聘Python工程师标准>>> 淡泊明志.宁静致远 A Diamond is just a piece of Coal that did well under ...

  4. 软件和硬件之间的数据交互接口

    已剪辑自: 链接 编者按 软件和硬件,既相互依存又需要某种程度上的相互独立.通过软件和硬件之间的接口把两者连接在一起.软硬件接口,有很多含义:比如指令集是CPU软件和硬件之间的接口:比如一些硬件模块( ...

  5. java与c的交互,java与c/c++之间的数据交互,java交互

    java与c/c++之间的数据交互,java交互 java与c/c++之间的数据交互有这样几种情况:java和c/c++之间基本数据类型的交互,java向c/c++传递对象类型,c/c++向java返 ...

  6. http协议跟服务器交互,基于HTTP协议的客户端与服务器之间的数据交互方法专利_专利查询 - 天眼查...

    L-种基于HTTP协议的客户端与服务器之间的数据交互方法,应用于智能$居系统 中,以使用户的客户端与智能家居系统的服务器之间建立稳定的网络连接并进行数据交 互,所述方法包括步骤: 所述客户端与所述服务 ...

  7. C++ 多线程之间的数据交互

    参考博客https://blog.csdn.net/hai008007/article/details/80246437,在此之上整理修改. 同一个进程内的多个线程之间免不了需要进行数据的交互,队列和 ...

  8. ddr传输 pl ps_PS/PL之间的数据交互办法

    01概述 MPSoC是Xilinx基于16nm工艺推出的异构计算平台,由于灵活.稳定,在业界得到了广泛的使用.异构计算是一个比较新的领域,需要协调硬件设计.逻辑设计.软件设计,对工程师的要求很高.实际 ...

  9. windows mobile开发循序渐进(5)移动应用程序与webservice之间的数据交互

    上篇遗留问题: 在使用数据库方面,egmkang和瑞雪年给了不少建议,我也测试了SQLite的使用,在对SQL Server CE的查询方面,egmkang的性能方面的测试代码也运行了一遍,很感谢你们 ...

最新文章

  1. jQuery中的Ajax----03
  2. 走在技术前沿,今年最火的top5 +Java开源项目
  3. hadoop学习;datajoin;chain签名;combine()
  4. java多线程实现表复制_Java多线程的三种实现方式
  5. oracle之单行函数1
  6. FastDfs分片上传文件实战
  7. c语言交通灯程序闪烁,用C语言编写的交通灯程序
  8. ASP.NET程序中常用的三十三种代码一
  9. 杭电OJ分类题目(1)
  10. 机器学习实战之KNN实现mnist手写数字分类
  11. Kaggle泰坦尼克号提升准确率探索
  12. windows 安装vagrant reload 失败; No Virtualbox Guest Additions installation found.
  13. 二硬脂酰磷脂酰乙醇胺-聚乙二醇-巯基吡啶 DSPE-PEG-OPSS;常用于脂质体的合成
  14. Qt5.12案例 翻金币小游戏
  15. linux insert最后一行,insert基础用法及进阶
  16. 【bzoj3238】差异 后缀自动机
  17. 理解 RxSwift:为什么要使用 RxSwift(一)
  18. 【单细胞高级绘图】10.KEGG富集结果的圆圈图
  19. IAR for MSP430 7_12在线调试不能打断点解决方法
  20. 宋词欣赏 李清照

热门文章

  1. docker 网络方案--分析
  2. MySQL中主键和unique的区别
  3. Spark SQL操作多数据源
  4. 怎么查自己电脑服务器信息吗,如何查看自己电脑的服务器
  5. 基于thinkphp5的简单的下拉菜单二级联动
  6. 开发者必备的顶级Android开发工具,成功入职阿里
  7. set接口-存储及遍历、HashSet、LinkedHashSet、TreeSet
  8. 一元函数对象、一元谓词、二元函数对象、二元谓词
  9. iphone相册源码下载(仿three20)
  10. HTML+CSS伸缩式导航栏