先来写一些用户的基础数据的管理的api。就是用户的基本的增删改查。用spring boot能够很容易的写出这种api
首先新建maven的项目
html
引入依赖。用最新的spring boot
https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/
https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/using-spring-boot.html#using-boot-dependency-management
搜索关键字maven。找到这里
复制这段
复制到项目里pom.xml内。有了这个依赖。之后在引入各类依赖的时候就不用再去写版本号了。由于dependencyManagement已经替咱们把版本号规定好了。
mysql
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
咱们要写一个web项目来提供http服务。输入starter-web来搜索
web
https://zhidao.baidu.com/question/401757501.html
m4eclipse插件实现的。
获取maven完整/实际/生效(effective)的pom.xml文件
https://blog.csdn.net/iteye_15147/article/details/82567934正则表达式
搜到这个复制下来
拷贝到,dependencies这个标签里面
而后把版本号去掉
spring
新建一个包
建立启动类
sql
新加user类
user类里面有两个属性id和name
再搜索lombok的包,这里搜索一下
复制到项目,而后去掉版本号
@Data注解等价于加上这些注解。自动为这个pojo(持久化类)类里面的属性生成getter方法、setter方法、全参数的构造函数、覆盖Object里面的ToString方法、副高Equals和HashCode方法
数据库
先不写业务逻辑,先把全部的方法声明
增删改查的方法
查一组用户的方法
api
2017年top10的攻击
第一名是注入攻击。最多见的是sql注入。eclipse
sql注入就确定就须要作jdbc的操做。搜一下 jdbc的库。
配置数据库相关的参数
如今用的驱动默认是MySql8的。因此下面用的这里的驱动名称要注意一下。叫作cj.jdbc.Driver 这个是MySql8的新的驱动类的名字
搜索mysql的驱动也加上
最终保留
maven
就表字段
加几条测试数据
查询user表,先注入jdbcTemplate
运行程序测试
在http的工具请求
name不写是查不到东西
这样就把系统的全部用户都查询到了。这个是sql的注入工具
程序加断点跟踪。or 1=1是永远都知足的条件。
首先输入的参数要作输入的校验,写一个正则表达式去判断参数 。另一种是控制数据库的用户的权限。
root用户什么都能干。应该用一个其余的用户 不能拥有全部数据库的权限。
用一些比较先进的数据库操做的库 例如JPA、 Mybatis。为何不用Mybaits呢由于也有被sql注入的风险。使用的时候依然要有一些注意的事项。
JPA基本上没有这个风险。
引入依赖
配置文件内加上jpa相关的配置
若是在这个User对象里面加属性的话,会自动的往数据库内加字段。若是新建别的对象,那么数据库就会自动多出来一张表来。就会保持对象和数据库的同步。开发的时候挺方便的。可是通常生产的时候不要这么用。
在日志里能够看到JPA最终执行的sql
User类加上Entity注解,这样这个pojo类就和数据库的表作了绑定。
加一个id直接告诉jpa。id这个属性书主键。
写一个接口。UserRepository。就是数据操做的对象。用来操做咱们的User对象。操做User对象就是操做咱们的User表。
继承这个接口,用来作一些动态的查询
建立一个基本的增删改查的接口。Long表示主键的类型
注入Repository
执行结果为空
功能实现了 同时防止了sql注入攻击来盗取咱们数据库内的数据
日志里面输出的sql语句