• JAVAEE进阶 -初识框架 - 细节狂魔


    前言

    从本文开始,我们就进入 javaEE 进阶的学习了。
    在这个系列的博客中,我主要讲解 四个框架。

    1、Spring
    2、Spring Boot
    3、Spring NVC
    4、MyBatis

    为什么要讲这么多关于 Spring 的东西?
    这是因为:目前所有公司的项目,基本上全部是使用 Spring 项目。
    而且从一位资深的程序员口中得知:从业 Java开发 十几年,遇到的所有项目都是 Spring 的!
    因此,我们 Java 程序员,又可以称为 Spring 程序员。
    毕竟,我们往后遇到的项目,都是 Spring 的。
    故:Spring 是必学的!!!


    至于, MyBatus。
    它是用来 代替 JDBC 编程
    JDBC 是 Java 提供的一组 用来 操作数据库 的 API。
    但是!由于 JDBC 使用起来,非常繁琐!
    一共五个步骤:
    1、获取数据源
    2、与数据建立连接
    3、编写 SQL 语句。
    4、执行SQL
    5、此时 SQL 已经执行完毕,然后需要我们去释放资源

    而且,重复的代码太多了!
    这一点在 博客系统项目中,最为明显!
    而使用 MyBatus,关于 JDBC的东西,你就可以全部忘了!
    你之前在 数据库客户端是怎么操作的,MyBatus 就是怎么操作的!
    不用像 JDBC 那样繁琐。

    另外,学习 Spring的一个重要原因。

    如果 有 两份简历 排在面试官面前。
    一份简历上的项目是 Servlet,另一份是 Spring 。
    servlet 的 简历,就可以直接进垃圾桶了。
    就是这么现实。

    理由也很直接,公司里都是 Spring 的项目。
    哪怕叫你去做 一个 非常简单的框架 项目,你都做上不了。
    因为你不会啊!!!
    那我招你干什么??


    1.为什么要学框架?

    .1、学习框架相当于从“⼩作坊”到“⼯⼚”的升级,⼩作坊什么都要⾃⼰做,⼯⼚是组件式装配,特点就是⾼效。

    说白了,小作坊就是什么都要自己做!【全栈程序员(复合型人才 )】
    而且 品质 无法得到 保证!【每个人的代码质量是不一样的】
    今天是师傅做,质量可以得到保证。【老手】
    明天可能就是学徒来做,质量可能就得不到保证。【新手】

    而工厂,就是专人专用。
    每个人只需要负责一件事,只要求把你这件事做好。
    其它的,都不要管!【比如:只让你做关于客户端的代码,其它的,不用你管。】
    而且一件事做得多了,熟练度会快速上升。【熟能生巧】
    无论是 品质,还是效率,都可以得到提升!


    2、 框架更加易⽤、简单且⾼效。

    想象一下,如果我们自己之前要做 判空 的话,要这么判空呢?
    假设,这个参数是从 前端传过来的。
    现在我们要对参数 进行判断,判断参数是否为 null(空)?
    如果为空,我们要构造一个错误信息,并把错误信息返回个前端。
    但是,这是非常非常原始的做法。

    如果我们使用了 框架 ,我们就可以在数据传输过来之后,定义一个 对象。
    然后,给这个对象加个注解(类似 override,后面讲的)。
    如果你给我传输过来的数据为null,那么,我就返回你定义的 注解后面的一个注释 “比如:姓名不能为空”。
    这就 OK了,代码不用写。
    你就直接 写一行注释 放在 那之后,然后,那些判断的,返回的 代码,就都不用写。
    方法就是:加一个注解,然后加一个错误提示,放在那里,就OK了。
    Spring 会帮我们自动进行 判断数据,返回数据,以及数据格式,都是一手包办的!
    这就是它的一个易用性的体现。
    不需要过多的操作,即可实现效果。
    后面,我会写个简单的 Spring 代码,让你们对比一下。
    看看 框架写的代码,相比于 servlet的代码,简易多少。

    不要害怕,Spring的学习 比 servlet 要简单!
    越高级的框架,它使用起来越简单。
    servlet 的学习,只是帮助你打好基础。
    帮助你更好的(理解 / 学习 ) Spring的代码。

    注意!我们是学习怎么使用 Spring 框架。
    而不是实现一个 Spring框架。
    实现一个 Spring 框架,是一件极其难的事情!!!


    框架的优点展示(Spring Boot VS Servlet)

    使⽤ Spring Boot 项⽬演示框架相⽐于 Servlet 所具备的以下优点:

    1、 ⽆需配置 Tomcat,点击“运⾏”按钮就可以运⾏项⽬,Spring Boot 内置了 Web 容器(可直接运⾏)。
    2、 快速添加外部 jar 包(依赖)。
    3、 快速发布项⽬(使⽤ java -jar ⽅式就可以发布)。
    4、 对象⾃动装配。
    5、 …

    使⽤ SpringBoot 和 Servlet 对⽐,演示⼀个⽤户添加的案例,展示以上优点。

    注意:下⾯的案例⽆需掌握,主要是看我演示即可,后⾯会分模块详细讲。
    主要是有个印象:用框架写一个代码有多简单方便。


    Servlet 项目的开发

    我这里就列举 进行 Servlet 项目的开发需要哪几个步骤。
    就不具体实现了。
    没了解过 servlet 的朋友,可以参考这篇文章servlet

    因为,通过 实现的步骤,我们就可以清楚的感受到 两者之间差异。
    servlet 项目 实现的步骤:
    1、创建一个 maven 项目
    2、在 pom.xml 中 引入相关依赖
    3、创建特定的目录
    4、编写代码
    5、打包
    6、部署
    7、验证程序
    8、发布【使用 (Tomcat) 进行 程序的部署和发布】

    Servlet 痛点分析

    1、添加外部 jar 不⽅便,容易出错,⽐如添加了⼀个不匹配的外部 jar 版本;
    2、运⾏和调试的时候需要配置 tomcat 不⽅便;
    3、 发布不⽅便,servlet 项⽬必须依靠外置的 tomcat(外置的 web 容器)运⾏。
    4、 路由配置不⽅便,⼀个访问地址对应⼀个 Servlet 类。
    5、…


    Spring Boot 项⽬开发

    创建项目并添加引⽤

    此乃 idea 科学版本。
    如果你是社区版,则需要安装插件 Spring Assistant。
    在这里插入图片描述


    对比 Servlet

    在这里插入图片描述


    编写代码:Spring Boot

    在这里插入图片描述


    对比 Servlet

    在这里插入图片描述

    在 Spring Boot中,一行代码顶个 三四行代码,是没问题的。
    项目一大,代码量一多!
    两者的 代码量 差距,就会非常明显!!!


    Spring Boot 运行项目

    在这里插入图片描述


    对比 Servlet

    在这里插入图片描述


    验证程序

    这个 和 Servlet 是一样的,都是浏览器去访问。
    在浏览器地址中输入:
    环回IP(主机地址)+ 冒号 + 端口号(8080) + UserController类的注解@RequestMapping(“/user”) 中 的 参数 /user + add 方法的注解中的参数 /add

    可参考Tomcat 和 HTTP协议博客
    在这里插入图片描述
    此时,这里的 /user 就相当于是 Servlet 的 context Path。
    而add方法 的 /add,就相当于是 Servlet Path。
    ?号,后面就是查询字符串。也就是 请求正文,即:参数。

    细心的朋友,就掏出他的宝贝(抓包工具 fiddler)来对 发送的请求 和 返回的响应 进行 抓包。

    在这里插入图片描述
    我们可以发现:返回的响应中,该有的部分,它都有。
    注意! 我可没有书写 设置 响应的 数据格式!!!
    这都是 Spring Boot 帮我们写好了的!!!


    发布项目: Servlet VS Spring Boot

    在这里插入图片描述
    退出的话,就是 cmd 的 撤销指令:Ctrl + C
    在这里插入图片描述
    删除操作,我就不演示了。
    都是一样的。


    下面来给大家 分享一个 Spring Boot 非常好用的功能。

    回想一下一下 Servlet 返回一个 json 数组 形式的数据,该怎么做?

    1、在中央仓库中 搜索 jackson,安装 2.12 版本 的。
    2、引入 Jackson 依赖之后,通过 ObjectMapper 中间提供的 writeValueAsString 方法,来搜索结果转换成 json 的字符串。
    3、在 返回结果之前,需要通过 resp.setContentType(“application/json; charset=utf8”); 来告诉 浏览器 返回的是一个 json 格式的数据。
    4、将 转化后的 json 字符串 结果,返回给 前端(浏览器)。

    再来看看,在Spring中是如何返回一个 json 形式的数据。

    一行关于 json’ 的 代码都没有!!!
    直接返回一个 hasMap 就行了!【键值对 嘛】
    在这里插入图片描述


    总结:SpringBoot VS Servlet

    SpringBoot 相⽐于 Servlet 的优点总结:

    1、 添加外部 jar 更容易(依赖),不易出错(版本问题⽆需关注);
    在这里插入图片描述
    ;
    2、 调试项⽬更加⽅便,⽆需配置 Tomcat;
    3、发布项⽬更加⽅便,⽆需配置 Tomcat;
    4、 添加路由更加⽅便,⽆需每个访问地址都添加⼀个类。
    5、 …

    还是那句话,这篇博客,只是让你认识 servlet 和 spring 框架的不同。上述代码你们敲不敲,都无所谓!
    主要,现有一个概念:使用框架来写项目,美得很!


    拓展

    通过上述我们明白,依赖是在创建项目的视乎,就已经勾选上了。
    但是如果我们发现:引入依赖不够,还需要一些 依赖,才能继续往后编写。
    那么,我们该怎么办?
    回炉重造?不可能!绝对不可能!!
    下面,我演示一下:如果在项目已经创建好了之后,再添加其它的依赖。
    在这里插入图片描述
    PS: 其实 Spring Boot 的底层实现,也是 Servlet。
    Spring Boot,就是对 Servlet 封装后的产物。


    怎么学习框架?

    1、先从基础框架 Spring 开始(⼯具箱)
    2、Spring Boot 快速开发 Spring 脚⼿架
    3、Spring MVC
    4、MyBatis 快速操作数据库
    5、其他:⽇志、事务、拦截器…
    这些,我都会在后面针对性的写一篇博客。
    可能会有点久,毕竟博主要开始准备找工作了。

    学习 Spring,是因为我们进入公司,新手一般是从旧业务做起。
    而旧业务。大部分都是 Spring,还没有升级到 Spring Boot 的。
    而且,Spring 和 Spring Boot,完全就是两个东西。
    不要以为你回了 Spring Boot,就会 Spring 了。
    这是不现实的!


    框架学习中的难点

    1、 配置⽐较多。【操作简单】
    2、 需要⼤量的外部 jar 包,在下载时容易出错。【需要配置国内的源】
    3、会涉及简单的软件⼯程的设计思想(分层思想:前、后端的分层思想;后端⼯程的分层思想)。
    4、 知识点相对来说⽐之前的知识更加的分散,要仔细听才能搞懂各个知识点的逻辑关系。
    5、 要记的东⻄很多,所以要⼤量地重复练习才能记住,⽐如各种注解

  • 相关阅读:
    http跨源资源共享(CORS)
    面试复习题——底层
    C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)
    字典管理怎么使用,vue3项目使用若依的的字典管理模块
    CUDA学习笔记6——事件计时
    二叉搜索树(Binary Search Tree,BST)
    Redis查询Key
    AD教程 (十)Value值的核对
    【重拾Java系列】—— 集合之Collection
    2022.07.20 NDK OpenGL ES 3.0 :画个三角形,纹理贴图(刚入门就入土)
  • 原文地址:https://blog.csdn.net/DarkAndGrey/article/details/125587982