美文网首页
第一章(nk)

第一章(nk)

作者: 全麦土司 | 来源:发表于2020-01-28 17:54 被阅读0次

【个人随手记】

今天距离过年还有六天,戒骄戒躁,努力学习,马上就二月了。
今日计划:
看完第一天的课程。记笔记,并思考,明天敲代码并进行查漏补缺。
敲多线程部分的代码,或者温习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

在测试类中书写如下的代码:


image.png

发现这是一个GenericWebApplicationContext类,接下来我们来看如何进行管理。

再新建一个包:


image.png
image.png
image.png

测试类:


image.png

如果我们想换成mybatis数据库的实现,只需要加上@primary,即可,其他的地方都不需要变化。因为我们在测试方法中依赖的是接口类型,而不是类本身。

image.png image.png
image.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中的数据进行替换。随后两者合二为一。

  1. 标准表达式:页面上哪一些内容需要被动态进行替换。
  2. 判断和循环:
  3. 模板的布局:如何复用一样的内容。
  • 首先:关闭缓存,如果不管不关闭缓存,在修改了网页之后,可能显示的还是缓存中的内容,不利于我们进行修改,因此在进行开发的时候,应该将缓存关闭,当系统上线之后,应该将缓存打开,缓存会降低服务器的压力。
关闭缓存的语句.png
  • 常用配置的连接:


    image.png
    image.png

这里的配置其实是在给配置类注入数据。

  • 写代码演示springmvc的常见语法:


    通过 request对象获取相关数据 .png
    image.png

    新语法:不需要再写finally


    image.png

传递参数:不同的参数中间使用?进行连接


image.png
  • 后面会讲封装之后更简单的处理请求的方式。
    包括下面两个问题:
    怎么接受请求数据
    怎么返回响应数据
这种限制只有get请求可以进行访问.png

ctrl+F9进行重新编译运行。

我们可以非常方便的在springmvc中获取get请求的参数。


image.png
  • 另一种方式:
    根据一个学生的id查询,直接将参数写在路径中,使其成为路径的一部分。
image.png

写的表单:对于post请求


image.png

get请求传递参数的局限性:

  1. 可以看到传递的参数,不太安全
  2. 参数的长度是有限的。
image.png
  • 接下来将如何对浏览器进行响应:】
    如何对浏览器响应动态的html页面。
image.png

要对模板进行一个声明,让服务器知道这不是一个普通的html文件,而是一个模板。

image.png
  • 另一种方式:


    image.png

他它的返回值是view,参数是model,也相当于同时具有了modelAndView。
上面的这两种方式起始是一样的,只是上面的这个更加直观。

以上是向浏览器响应html数据的两种方法。

  • 响应json数据
    一般在 异步请求中,当前网页没有刷新,但是访问了服务器。
    有了JSOn字符串,java对象可转成js对象,csub对象等任何语言的对象。
    跨语言的环境下,json非常受欢迎。
    返回json对象的时候也应该使用@ResponseBody否则默认返回的是一个html页面。


    控制器中的代码.png
这就是所谓的json字符串.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
image.png image.png
  • 将dao中的mapper.xml的日志级别调成debug,这样可以打印出所有的sql语句,便于排错。下面的意思是将community这个包的日志级别调成debug。


    image.png

开发社区首页:

综合之前所学,进行首页的开发。
任何一个功能都可以拆解成一个一个请求。
controller就是所谓的视图层(还包括模板),请求都是首先提交给视图层。

image.png
  • 写实体类:


    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都表示重定向。

这样的调用会产生依赖.png

上面的依赖方式不是很好,我们可以使用重定向方法减少依赖。


image.png

客户端发送两次彼此独立的请求。
注册之后直接跳到登录页面,重定向可以以低耦合的方式进行功能跳转。

4开头的状态码表示出现了错误。一般就是路径错误。
5开头表示服务器在处理的过程中出现了错误,应该检查服务端的程序。

服务端断点调试技巧

客户端断点调试技巧:
对js进行调试:
f10:向下运行一行
f11:进入到函数里面
f8:跳到下一个断点


image.png
  • 设置日志级别:
    按照级别记录日志,按照需要打印日志,

  • 普通记录日志

  • 将日志记录到文件中:
    修改配置文件目录:


    image.png

    对于这种方式,控制台一样会进行输出。

  • 注意事项
    注意啦,对于上面的日志,将所有级别的日志信息都输出到了一个文件下面,并不是很合适的行为,我们一般将每条日志分到对应级别的日志。而且每当文件大小达到一定的程度,就会新建文件。
    怎么做呢??写一个logback对应的xml文件。
  • 研究了一下log-spring这个xml文件表示的含义。

第一章节最后一节课,版本控制:

image.png

git 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

相关文章

网友评论

      本文标题:第一章(nk)

      本文链接:https://www.haomeiwen.com/subject/nkjkzctx.html