从本文开始,我们就进入 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、学习框架相当于从“⼩作坊”到“⼯⼚”的升级,⼩作坊什么都要⾃⼰做,⼯⼚是组件式装配,特点就是⾼效。
说白了,小作坊就是什么都要自己做!【全栈程序员(复合型人才 )】
而且 品质 无法得到 保证!【每个人的代码质量是不一样的】
今天是师傅做,质量可以得到保证。【老手】
明天可能就是学徒来做,质量可能就得不到保证。【新手】
而工厂,就是专人专用。
每个人只需要负责一件事,只要求把你这件事做好。
其它的,都不要管!【比如:只让你做关于客户端的代码,其它的,不用你管。】
而且一件事做得多了,熟练度会快速上升。【熟能生巧】
无论是 品质,还是效率,都可以得到提升!
2、 框架更加易⽤、简单且⾼效。想象一下,如果我们自己之前要做 判空 的话,要这么判空呢?
假设,这个参数是从 前端传过来的。
现在我们要对参数 进行判断,判断参数是否为 null(空)?
如果为空,我们要构造一个错误信息,并把错误信息返回个前端。
但是,这是非常非常原始的做法。
如果我们使用了 框架 ,我们就可以在数据传输过来之后,定义一个 对象。
然后,给这个对象加个注解(类似 override,后面讲的)。
如果你给我传输过来的数据为null,那么,我就返回你定义的 注解后面的一个注释 “比如:姓名不能为空”。
这就 OK了,代码不用写。
你就直接 写一行注释 放在 那之后,然后,那些判断的,返回的 代码,就都不用写。
方法就是:加一个注解,然后加一个错误提示,放在那里,就OK了。
Spring 会帮我们自动进行 判断数据,返回数据,以及数据格式,都是一手包办的!
这就是它的一个易用性的体现。
不需要过多的操作,即可实现效果。
后面,我会写个简单的 Spring 代码,让你们对比一下。
看看 框架写的代码,相比于 servlet的代码,简易多少。不要害怕,Spring的学习 比 servlet 要简单!
越高级的框架,它使用起来越简单。
servlet 的学习,只是帮助你打好基础。
帮助你更好的(理解 / 学习 ) Spring的代码。注意!我们是学习怎么使用 Spring 框架。
而不是实现一个 Spring框架。
实现一个 Spring 框架,是一件极其难的事情!!!
使⽤ Spring Boot 项⽬演示框架相⽐于 Servlet 所具备的以下优点:
1、 ⽆需配置 Tomcat,点击“运⾏”按钮就可以运⾏项⽬,Spring Boot 内置了 Web 容器(可直接运⾏)。
2、 快速添加外部 jar 包(依赖)。
3、 快速发布项⽬(使⽤ java -jar ⽅式就可以发布)。
4、 对象⾃动装配。
5、 …使⽤ SpringBoot 和 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、…
此乃 idea 科学版本。
如果你是社区版,则需要安装插件 Spring Assistant。
在 Spring Boot中,一行代码顶个 三四行代码,是没问题的。
项目一大,代码量一多!
两者的 代码量 差距,就会非常明显!!!
这个 和 Servlet 是一样的,都是浏览器去访问。
在浏览器地址中输入:
环回IP(主机地址)+ 冒号 + 端口号(8080) + UserController类的注解@RequestMapping(“/user”) 中 的 参数 /user + add 方法的注解中的参数 /add可参考Tomcat 和 HTTP协议博客
此时,这里的 /user 就相当于是 Servlet 的 context Path。
而add方法 的 /add,就相当于是 Servlet Path。
?号,后面就是查询字符串。也就是 请求正文,即:参数。细心的朋友,就掏出他的宝贝(抓包工具 fiddler)来对 发送的请求 和 返回的响应 进行 抓包。
我们可以发现:返回的响应中,该有的部分,它都有。
注意! 我可没有书写 设置 响应的 数据格式!!!
这都是 Spring Boot 帮我们写好了的!!!
退出的话,就是 cmd 的 撤销指令:Ctrl + C
删除操作,我就不演示了。
都是一样的。
回想一下一下 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 相⽐于 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、 要记的东⻄很多,所以要⼤量地重复练习才能记住,⽐如各种注解