一、MVC模型的发展
①在早期的javaweb开发中,主要是JSP+javabean模式,被称之为Model1,但这样JSP和Java Bean出现严重耦合,Java和html也耦合在一起,这样开发者不仅要会Java还要会前端开发,对开发者要求颇高。而且页面的前后端出现相互依赖的情况,前端和后端无法单独测试,只有全部完成才能进行有效测试。并且几乎所有操作难以复用,因为业务逻辑和页面逻辑相互混杂无法分离。
②为解决种种弊端,早期的MVC模型:Servlet+JSP+Java Bean出现了,被称为Model2。
过程:用户请求到达Servlet,Servlet作为控制器接受请求,并调度模型层的Java Bean来读写数据库的数据,然后将数据放入视图层的JSP中展示给用户
好处:⑴虽然仍有耦合,但前后端已有了一定的分离。⑵后端的控制器和模型层的分离使得大量java代码得以复用
③之后,MVC的经典框架struct1、struct2、模型层Hibernate纷纷崛起。
④如今,随着手机端兴起,web页面大部分使用ajax请求,它们之间只需交换json数据,对于JSP的依赖大大减少,因此struct已经不适合时代发展。而由于不可优化SQL、不够灵活等原因,Hibernate逐渐被MyBatis淘汰。为了适应这些变化Spring MVC应运而生。
二、概念
1、库、框架和架构
①库:一系列预先编写好的代码集合,供开发者在编程中调用,减少工作量
从npm、maven等下载的包都是库,自己写的函数包装好后调用,也叫库
②框架:一个半成品,对基础代码进行了封装并提供了API,最大的特征是它会接管程序的主控制流,开发者只需编写业务逻辑代码,具体执行工作由框架来调用
比如,用spring开发web项目,只需要编写控制层、业务层和模型层以及配置文件等,具体到项目如何启动,如何监听端口,每次网络请求的响应处理,这些都由框架实现。
每种语言都有自己的开发框架,而且一直在不断的更新和产生新框架,但每种语言都由自己的经典框架,比如java的spring。
库:主要是你写的代码在调用库中的代码
框架:主要是框架的代码在调用你的代码
③架构:规模更大的抽象概念,并不涉及具体的语言和代码,它可以是编程模式(MVC模式、MVVM模式等)、客户端形式(B/S架构、C/S架构)、服务器结构(分布式架构、微服务架构)
所以架构师并不是写代码块、bug少,而是掌握并评估项目适合什么架构
2、JAVA
①JavaSE:java技术的核心,是 jdk、jvm 以及自带的api合集的具体实现,它允许开发和部署在桌面、服务器、嵌入式环境中使用java程序,是Java ME和Java EE编程的基础。
②JavaEE:基于JavaSE而发展出来的一套接口规范(是规范,并不是实现),包含十三种核心技术:JDBC、XML、JSP、Servlet等。
③JavaME:基于JavaSE的一套运行专门为移动设备和嵌入式设备设计的接口规范,比如机顶盒。
3、Spring、SpringMVC、SpringBoot
①Spring:基于JAVA EE产生的轻量级开发框架。
⑴Spring是一个独立的框架,它替代并改进了JavaEE的许多部分,因此它并不完全遵守JavaEE规范。
⑵Spring允许使用所有的JavaEE技术
⑶Spring最核心的理念是:IOC(控制反转)和AOP(面向切面编程)
⑷JavaEE和Spring各有优势和缺点,两者无从比较
②SpringMVC:一种基于Spring的MVC模式Web开发框架,是Spring的内容的一部分
③SpringBoot:一种微服务框架,解决了Spring框架需要配置各种注解和XML文件添加各种依赖等重复性工作问题,将这些工作封装为模块交由SpringBoot执行,大大简化了项目搭建过程,使得工作人员能够更专注于业务逻辑。
4、其他
①Mybatis:一种持久层框架,它免除了几乎所有的JDBC代码以及设置参数和获取结果的工作,能够更好的和数据库交互
②Maven:一个标准化的java项目管理和构建工具
作用:①确定统一的项目结构,方便团队开发②pom文件中包含了项目基本信息、项目如何构建、项目所需的依赖(jar包),用于项目执行时提供信息③pom文件中声明一个依赖项可以自动下载对应jar包,并导入classpath,不用自己去网上下载。
③SSM:一种Spring+SpringMVC+Mybatis的整合框架,是目前较主流的javaEE企业级框架,适合于数据源较简单的Web项目。
SSM是一种MVC模式:
Mybatis:Model层,数据对象的持久化引擎
SpringMVC:Controller+View层,前后端数据交互和视图展示
Spring:整个项目组件管理和控制