【个人随手记】
今天距离过年还有六天,戒骄戒躁,努力学习,马上就二月了。
今日计划:
看完第一天的课程。记笔记,并思考,明天敲代码并进行查漏补缺。
敲多线程部分的代码,或者温习JMM。
1、如何查看maven的版本。
2、maven常用命令:
mvn -version
找到官网,里面就有一个user centre->5分钟学会的地方有相关的介绍。
- 创建一个项目:
想将一个项目创建到哪儿就先cd到哪儿。
最后会提示创建成功了。
正式上线的时候,test目录会被抛弃。 - 编译一个项目:
此时没有class文件,因此这个项目目前是不可以运行的。cd到带有pom.xml的目录下,
mvn compile
回生成一个target文件夹。generated-source以及maven-status是在编译的过程中,需要依赖的资源,class文件时我们需要的内容。里面没有test,
mvn clean:删除刚才编译的内容
mvn compile这时又有了,
mvn clean compile:先清理,在运行。
mvn clean test:编译之后再进行测试。test命令包含了compile。我们可以发现target里面包含了test-classes。
- 运行
- 打包
以上就是基本的命令。
二、在第二部分,打开了Idea之后,点击右边的maven可以进行和命令行一样的编译和清空操作,除此之外,还可以使用build->build program命令进行编译。
使用sping initializer创建就一个springboot的项目。
https://start,spring.io。
maven虽然可以帮助我们解决很多的问题,但是在包比较多的时候,还是不太方便。
image.png
阿里云搜索,看不出来包的好坏
在maven仓库进行的搜索,有使用的数量排名。但是逐个进行搜索还是比较麻烦。
springinitialize将我们平时使用的包进行了分类,按照功能。输入web可以引用web相关的许多包。底层还是基于maven。
image.png- aop
- web
- thymeleaf
-devtools//开发者工具
生成项目
以上环境搭建完成,并且实例已经可以调通,
如何运行,
springboot它以jar包的方式内嵌了一个tomcat。在externallibrary中。
浏览器访问:
localhost:8080
image.png
这个结果说明了服务器确实是在工作,如果说没有在工作,结果不是这个样子的,但是由于没有内容,才返回这个结果。
程序跑起来:
当我们访问服务器的某个路径的时候,可以进行返回。
image.png
这种starter开头的依赖不是一个包,而是一堆包。按住ctrl进去之后,可以看到实际的依赖。
简单演示:
image.png
这两个是springmvc的注解。
requestMapping其实就相当于是给类取了一个访问名字。
image.png
@ResponseBody说明这个方法返回的是一个字符串,而不是一个网页。
可以点击build进行编译和启动,或者是点击左下角进行编译启动。
编译之后自动重启是devtools的功能。返回的就是一个字符串。
-------第三节课--------
1.6 Spring入门【瑞客论 坛 www.ruike1.com】
IOC容器的作用是为了减少bean之间的耦合度。
image.png这一句话创建了自动创建spring容器,同时启动了tomcat。
@SpringBootApplication标注的类是一个配置类。
按住contral进去可以发现:
image.png
@springBootconfiguration:说明这个类是一个配置的类
@EnableAutoConfiguratiojn:启用自动配置。
@ComponentScan:组件扫描。扫描配置类CommunitiApplication所在的包以及子包下面的类。扫描带有注解的类,比如说是@service @Component。
在测试类中书写如下的代码:
image.png
发现这是一个GenericWebApplicationContext类,接下来我们来看如何进行管理。
再新建一个包:
image.png
image.png
image.png
测试类:
image.png
如果我们想换成mybatis数据库的实现,只需要加上@primary,即可,其他的地方都不需要变化。因为我们在测试方法中依赖的是接口类型,而不是类本身。
image.png image.pngimage.png
-
对于其他的类,比如jar包中的类,我们使用@Bean注解生成对象。
image.png
方法名就是bean的类名。
也就是这个方法返回的类对象将被装配到容器中。
如果将下面的对象声明写在方法中会怎么样。也就是说@Autowired是不是只能用在类的属性上面,还是也可以用在方法中,或者是方法的参数上面。
@qualifier里面的上bean的名称 。
image.png
除了可以加在属性上面,还可以加在构造器或者set方法前面。
现在的问题 就是,可以在方法中新声明一个类,然后在方法中对这个类对象进行注入吗???
1.14 Spring MVC 入门【瑞客论 坛 www.ruike1.com】
这个框架是用来进行web开发的。
-
首先了解一下http协议:
image.png
-
为什么在一次网页请求中会有那么多次小的请求???
浏览器在解析网页的时候会发现网页依赖于各种各样的文件,比如css文件,js文件,图片文件等用来渲染文相关内容。发现了依赖的文件之后就会再次向服务器发出请求。
image.png
-
spring MVC
image.png -
!!!原来三层架构并不是mvc,刚刚知道!!!
首先调用copntroller然后调用业务层进行处理,随后将处理的结果封装到model中,再传递给视图层,然后视图层会利用model数据生成html文件返回给浏览器。
cointrollser:处理浏览器的请求,负责进行调度
view:渲染,展现
中间的纽带:model
以上这三层集体解决 表现层的问题。
-
是谁在调度springmvc这三层的呢???
核心组件:前端控制器,DispatchaeServlet。
image.png
@RequestMapping就是由HandlerMapping进行管理。
image.png图里面的front controller就是前端控制器,也就是springmvc的核心组件。
- 首先要理解mvc解决的是哪一个层次的问题,
- 底层核心组件是谁,如何进行调度的。
-
如果想给浏览器返回动态的网页,需要另一个工具的支持。
image.png
模板文件包括了网页的基本结构,还有一些表达式,表达式可以被model中的数据进行替换。随后两者合二为一。
- 标准表达式:页面上哪一些内容需要被动态进行替换。
- 判断和循环:
- 模板的布局:如何复用一样的内容。
- 首先:关闭缓存,如果不管不关闭缓存,在修改了网页之后,可能显示的还是缓存中的内容,不利于我们进行修改,因此在进行开发的时候,应该将缓存关闭,当系统上线之后,应该将缓存打开,缓存会降低服务器的压力。
-
常用配置的连接:
image.png
image.png
这里的配置其实是在给配置类注入数据。
-
写代码演示springmvc的常见语法:
通过 request对象获取相关数据 .png
image.png
新语法:不需要再写finally
image.png
传递参数:不同的参数中间使用?进行连接
image.png
- 后面会讲封装之后更简单的处理请求的方式。
包括下面两个问题:
怎么接受请求数据
怎么返回响应数据
ctrl+F9进行重新编译运行。
我们可以非常方便的在springmvc中获取get请求的参数。
image.png
- 另一种方式:
根据一个学生的id查询,直接将参数写在路径中,使其成为路径的一部分。
写的表单:对于post请求
image.png
get请求传递参数的局限性:
- 可以看到传递的参数,不太安全
- 参数的长度是有限的。
- 接下来将如何对浏览器进行响应:】
如何对浏览器响应动态的html页面。
要对模板进行一个声明,让服务器知道这不是一个普通的html文件,而是一个模板。
image.png-
另一种方式:
image.png
他它的返回值是view,参数是model,也相当于同时具有了modelAndView。
上面的这两种方式起始是一样的,只是上面的这个更加直观。
以上是向浏览器响应html数据的两种方法。
-
响应json数据
一般在 异步请求中,当前网页没有刷新,但是访问了服务器。
有了JSOn字符串,java对象可转成js对象,csub对象等任何语言的对象。
跨语言的环境下,json非常受欢迎。
返回json对象的时候也应该使用@ResponseBody否则默认返回的是一个html页面。
控制器中的代码.png
无论是map或者是其他自定义的类型,只要是属性和数之对应的结构,都可以转成json数据。
响应的类型是json数据格式.png
-
假如说返回的不是一个员工而是一组员工
image.png
image.png
1.23 Mybatis入门【瑞客论 坛 www.ruike1.com】
-
首先,安装mysql的服务端以及客户端
image.png
image.png
注意,上面的路径需要进行修改。
image.png
注意,第一次进行初始化的时候,不论有没有配置全局变量的路径,都得使用管理员身份打开cmd并且cd到相关的目录。
image.png
image.png
初始化之后再正式安装这个服务。
net start mysql:正式启动服务
然后就可以使用普通的方式打开mysql了。
但是,使用默认生成的密码没法执行任何操作,首先必须修改密码。
alter user root@localhost identified by 'root'
create database community;
show databases;
use community;
source 路径 文件名;//导入建表的脚本,路径得是左斜线
show tables;//显示表,接下来是导入数据
source 路径 文件名init_data.sql;//导入数据完毕、
select * from user; ///查看数据////
只是安装服务器端会发现它并不是很好用,所以还得安装一个客户端。安装位置如下:
image.png
安装完成之后,右键edit。
image.png
image.png
image.png
点击右边的I可以查看建表的语言:
image.png
-
接下来开始编写代码,首先是导包,先导mysql(8.0.16),然后导入mybatis。
不是单纯的mybatis(2.0.1).png
-
接下来继续对mysql和mybatis进行一些配置:
image.png
classPath指的是那个classes文件夹。
接下来开始写实体类,对表中的数据进行封装,才好进行操作:
定义实体类.png
在dao层里面写数据访问的组件:
image.png
这是一个接口。
这个类上面可以使用mapper或者使用repository,都可以的哦
image.png
-
接下来开始写配置文件,在配置文件中需要给每一个方法写对应的sql。
在mybatis官网的入门案例中,可以找到mapper配置文件的写法。
userspace表示配置文件是为哪一个类服务的。
下面:我记得,参数只有一个的时候,不用在意参数具体是什么名字。
image.png
接下来进行提炼和复用:使用sql标签。尽量不要使用*,而且为了方便今后的修改,使用下面的形式。
image.png
-
查询语句完事儿之后,接下来是增加和修改的操作:
image.png
image.png
image.png -
接下来进行测试,观察可不可用:
image.png
在这个包下面新建了测试类。
image.png
image.png
-
将dao中的mapper.xml的日志级别调成debug,这样可以打印出所有的sql语句,便于排错。下面的意思是将community这个包的日志级别调成debug。
image.png
开发社区首页:
综合之前所学,进行首页的开发。
任何一个功能都可以拆解成一个一个请求。
controller就是所谓的视图层(还包括模板),请求都是首先提交给视图层。
-
写实体类:
image.png
@Param是用来给参数4别名
image.png image.png
-
我还以为下面图中的userId可以是0呢??
image.png -
接着开始开发业务层,调用数据访问层。
image.png -
此时的问题
我们希望查询带userId的时候,能够关联查询用户的信息,因为我们肯定不能在页面上显示userId,还是需要显示用户名才好。
image.png
展示主页面index的展示:
image.png
-
html页面需要指出使用的模板引擎是谁??
image.png
image.png
像下面这样写th:href会固定向static目录下面找文件。
image.png
下面的js也使用这样的方式进行替换。
-
其实访问的是下面的情况:
image.png
th:utext:可以将转义字符显示成为该有的样子。比如<会显示成小于号。
image.png-
修改格式:
image.png
在使用函数的时候,前面加上#,表示使用某个函数的某个方法。
到此暂时结束。
- 开启服务,进行测试:没问题,继续完成分页的功能。
-
增加了Page类
image.png -
开始处理逻辑中的分页部分:
image.png
- 关于路径的拼接,我真是很不明白,路径压根不是已经存在的,怎么进行访问的呢???
我还不明白,current是怎么进行却确定的。
思考一下为什么page类在controller里面只进行了两个设置。
可以使用断点调试。
项目的调试技巧:
image.png响应状态码:
常见状态码.png
2开头都表示成功了。
3都表示重定向。
上面的依赖方式不是很好,我们可以使用重定向方法减少依赖。
image.png
客户端发送两次彼此独立的请求。
注册之后直接跳到登录页面,重定向可以以低耦合的方式进行功能跳转。
4开头的状态码表示出现了错误。一般就是路径错误。
5开头表示服务器在处理的过程中出现了错误,应该检查服务端的程序。
服务端断点调试技巧
客户端断点调试技巧:
对js进行调试:
f10:向下运行一行
f11:进入到函数里面
f8:跳到下一个断点
image.png
-
设置日志级别:
按照级别记录日志,按照需要打印日志, -
普通记录日志
-
将日志记录到文件中:
修改配置文件目录:
image.png
对于这种方式,控制台一样会进行输出。
- 注意事项
注意啦,对于上面的日志,将所有级别的日志信息都输出到了一个文件下面,并不是很合适的行为,我们一般将每条日志分到对应级别的日志。而且每当文件大小达到一定的程度,就会新建文件。
怎么做呢??写一个logback对应的xml文件。
- 研究了一下log-spring这个xml文件表示的含义。
第一章节最后一节课,版本控制:
image.pnggit version//查看版本
git config --list //查看git的配置
git config -- global user.name "name"
git config --global user.email "....@com"
再次使用git config --list
//将代码存储到本地仓库
先cd到代码目录下面
git init//git工具会在这个目录下面创建隐含的目录.git
git status 查看代码的状态,发现他们还没有被添加到库中
git add 表示添加所有的文件,如果只是添加xml文件,就是.xml。
git status 临时存在与本地仓库中,但是还没有进行提交,因此并不是永久存在与本地仓库中。
git commit -m "备注" -m表示给本次提交添加一个备注。
再次查看状态
git status
每一次修改之后,都可以重新查询git status并且进行git commit。
本地仓库管理代码非常简单
- 将本地已经提交的代码传到远程仓库中去
哇偶,牛客居然也有公共的代码仓库哦
ssh-keygen -t rsa -C --邮箱//为了安全,首先生成密钥
然后拿着密钥去远程仓库进行配置
在本地声明一下这个远程仓库,取一个别名,不至于每次都写一个大网址。
git remote add origin 大路径
git push -u origin master
输入用户名和密码
输入注册牛客网的邮箱和密码
如果想下载代码:git clone 路径。首先要cd到相关的路径,下载内容还包括了git的历史版本。
- Idea配置git
网友评论