美文网首页
第一章(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