sb1

maven:

1.依赖管理:

 下载:

http://maven.apache.org/download.cgi

点击:Binary zip archive中的apache-maven-3.6.3-bin.zip

 解压maven安装包:

 

bin目录的mvn用来构建项目

环境变量path要有mave安装目录的bin,也要有jdk的bin

检测:

 找jar包时先在本地仓库找,找不到再上网去中央仓库或镜像仓库下载到本地,再用。

 jar的坐标: 

 

远程仓库修改为阿里云的镜像仓库:

 

 

 

在idea中配置,它会自动下载仓库到:D:\aaa2222339\.m2\repository

 利用mvn命令快速创建hello项目:

项目地址在前面的目录:

 

 编译项目(不包括测试类)生成target:

 

先删除target再编译:

 

 

先clean再编译(包括test):

 

idea:

import Project:导入项目,如将eclipse项目导入进idea里面

open :打开之前已经创建好的idea项目

设置字体:

 

 

配置mvn:

 

利用官方魔板快速创建mvn项目:

 

 

 

配置项目位置:

 

 运行自动引入资源:

 

 编译:

 

 或者:

 单独执行某个方法:

main:

 

 

 

新创建一个web项目(不是maven项目)所需要的开发环境:spring initializer,包含对应的一堆jar包都引入进来了:

 

 

 

 

 

 

解压缩到某个目录下:

 

使用idea打开刚刚下载的项目:

 

 

 或者直接在idea里面的spring initializr新建项目也行,接下来配置maven:

 

 

 

 

运行一下,此时项目内嵌的tomcat服务器开始工作:

 

 浏览器查看:

 

spring boot的作用:

起步依赖:一开始时会依赖一些基本的jar包

自动配置:不用再手动配置很多东西

端点监控 

建包,包下建立文件:

 

 

 

 

注解里的字符串是路径参数

 

 重新启动服务器,重新编译:

 

 

访问:

 关掉服务:

 

 

可以设置服务器端口和一级路径:

 

 启动:

 

 然后重启服务器,此时访问要加上一级路径:

@springBootApplication:所标注的类是配置文件

SpringApplication.run(类名.class,args):启动Tomcat并自动创建Spring容器,该容器能自动扫描配置类所在的包以及子包下的被注解标识的bean

比如@controller标识,它用于处理请求,然后装配到容器中

下图只扫描这个包下的bean

下图测试类中:

@Context....:指定Comu..class是配置类

为了拿到Spring 容器,需要实现一个接口。

ApplicationContext对象就是Spring容器,把它拿过来并保存到成员变量里面

测试方法@Test用于打印出该容器

 

 

 

 

 

 模拟访问数据库,先创建一个接口,再创建一个实现类:

@Repository表示用于访问数据库,也能标识Bean并被Spring容器扫描:

 修改测试方法,将Spring容器所扫描到的DAO Bean取出来,然后调用bean的select方法,在执行测试方法前,首先会执行setApplicationContext拿到Spring容器:

 

 再写个实现类做为另一个Bean,由于实现了相同的接口,Spring容器获取时不知道拿哪个,所以加入@Primary表示优先获得:

 

 

 然后再回到测试方法里面运行一下看看结果。

面向接口:将接口与底层实现不直接耦合,虽然实现类要变动,但是使用到接口的地方就不用改动代码

给Bean定义名字时,如果啥也没写,则默认是类名首字母小写,下面的括号给Bean一个新的名字:

 

 在测试方法当中,通过名字来获得对应的Bean,由于直接拿过来是Object对象,需要转成AlphaDao类型,然后执行该测试方法:

 

 再新建一个Bean:

@Service表示业务组件,也能修饰Bean

@PostConstrct:指定Spring容器在构造对象后就调用该方法

@PreDestroy:Spring容器在销毁对象前调用该方法:

 

再写个测试方法,当Spring容器初始化Bean之后就会执行该行代码,完了就即将销毁Bean:

 

 被Spring容器管理的Bean默认是单例,只有1个:

 

 若不想单例,则给Bean增加一个scope注解,默认值是single,然后运行测试方法看看:

 

 为了使用第三方的Bean,定义一个普通配置类(@Configuration),然后@Bean定义Bean,方法名要为第三方Bean的名字,该Bean用于格式化时间:

 

 然后在测试类当中就能直接从Spring容器中拿到该Bean并使用它的方法:

 

Spring Ioc:控制反转,依赖注入是实现它的一种方式 

@Autowired实现依赖注入:spring容器根据类自动把自己的Bean注入到属性里面,然后就能直接使用该属性了:

 

 依赖注入指定名字的Bean:

 

 在项目中,controller调用service,service调用dao

在service当中注入dao:

 

 

 

 在controller里面把service注入,编写getData方法,由于浏览器会访问到该方法,则加上2个注解:

 

 运行起来访问浏览器:

服务端有三层:

浏览器访问服务器时,先到表现层,表现层与业务层相交互,业务层与数据层相交互

mvc位于表现层,其中的Controller处理请求,model是桥梁,View用于显示

 

在mvc中,DispatcherServlet是前端控制器,它接受请求,根据注解信息找到对应的controller

得到回复后再把数据交给模板引擎,模板引擎生成html文件返回给DispatcherServlet,DispatcherServlet最后给客户端返回结果

 

 模板引擎用于根据model传来的数据和.html后缀的模板生成HTML文件

此处为了使得改变代码后能及时反应出来需要关闭模板缓存:

 

底层接受和相应浏览器

request拿到浏览器的请求,然后打印请求中的信息,response用于给浏览器答复

先打印请求方式,请求路径,请求头,请求参数:

 

 启动后浏览器访问:

 

 

 

 处理请求新方式:

第一个注解表浏览器访问路径以及必须是GET请求,GET请求用于浏览器从服务器请求数据(参数会显示到url中),POST请求用于浏览器向服务器提交数据

第二个注解表名返回的是个字符串

Spring容器会根据请求参数自动复制到形参当中,也能显式用@RequestParam,要把请求中的current参数复制进来,false:如果请求中没有该参数也行,那就用默认值defaultValue

该方法把请求中的参数做打印(不要前面的@RequestParam注解也能自动放到形参里面)

 

 

 

 如果把参数直接写到请求当中,则以此方式拿参数:

 

 

 

 

在static目录下新增一个文件夹,里面再放一个静态网页:

 编写处理表单请求的方法,只要形参和表单中的名字一致就行了:

 

 运行起来,然后访问浏览器:

 

 异步请求:向服务器发送了请求但不必刷新整个网页

相应json字符串:

 

 浏览器显示:

 

 若返回一个集合:

 

 

 

安装MySQL:

https://www.cnblogs.com/winton-nfs/p/11524007.html

 进入mysql会读取my.init进行配置,其中:

 

 创建库并使用:

 

 执行已有的脚本来建表:

 

 导入数据:

 

 安装sqlyog:

https://blog.csdn.net/lihua5419/article/details/73881837/

 Mybatis作用类似于hibernate:

user表中:

salt字段:一个随机数,拼到密码后再加密,这样能防止破解;

type中,0:普通用户,1:管理员,2:版主

status:用户状态,0:未激活,1:激活

header_url:用户头像路径

create_time:用户创建时间

添加MySQL包:

 

 

 

 复制代码并粘贴到pom.xml:

 

 

 

 添加Mybatis包:

 

 

 

 复制代码并粘贴到pom.xml

配置连接池和mybatis:

idle-timeout:当连接空闲后30000ms内还空闲的话就关闭掉;

package是告诉实体类的位置

倒数第二行:主键自增长

最后一行是将数据表中的字段与类里面的属性做匹配(驼峰匹配:数据库中的header_url能匹配类中的headerUrl):

 

新建对应的实体类和mapper:

 编写实体类,按住alt+insert生成get和set方法,以及toString方法:

 

 在DAO下新建一个接口(数据访问组件),Mybatis注解是@Mapper:

 

 创建配置文件,复制代码并改动一下来为每个方法配置对应的sql

其中namespace为对应Mapper类名,表示为它服务,select中的id为方法名,resultType:返回对象所属的类

#{id}:对应方法的参数名

 

sql标签的id自定义,下面的sql在引用该标签的所有字段

 

 

 

 

 由于复杂类型识别不了,所以得多定义parameterType,还要指定主键(id),这样数据库里的User就自动有了id,插入数据的时候就不用管id了,此处直接写拿到对象的属性#{}:

 

 

 

 

 开始测试与数据库打交道,新建一个测试类:

 

 

 

 

 

 

 

 设置日志级别,这样就能查看输出的sql语句,以便调试:

 

posted @ 2020-03-30 14:44  Jary霸  阅读(586)  评论(0编辑  收藏  举报