web
(一)SSH和SSM的区别
1.spring简介
Spring使Java简单易用、紧跟时代、复用性强、快速响应、云就绪。
Spring有五模块结构图,而这些组件被分别整合在核心容器(Core Container)、AOP(Aspect Oriented Programming)、设备支持(Instrument)、数据访问及集成(Data Access/Integratioin)、Web、报文发送(Messaging)、Test等模块。
spring的IOC&DI和AOP两大两大核心模块对企业项目开发过程产生了巨大的影响。
Spring框架以控制反转(IOC)和面向切面编程(AOP)为内核,提供了展现层(SpringMVC)、持久层(SpringJDBC)、业务层事务管理等众多的企业级应用技术,还能整合其他第三方开源框架和类库。
对于对象的实例管理更加方便,代码编写更加优雅,降低代码的耦合性,提升代码的可扩展性。
(代码见如下链接:https://www.gengruiblog.cn/)
2.MVC设计模式
MVC是模型(Model)、视图(View)、控制器(Controller)的缩写,是一种分离显示业务逻辑、数据和界面的设计模式。
模型(Model)表示应用程序核心,是应用程序中用于处理应用程序数据逻辑的部分,通常负责在数据库中存取数据。
视图(View)用来显示数据,是应用程序中处理数据显示的部分,通常View是依据Model的数据而创建的。
控制器(Controller)用来处理用户输入并调用模型和视图来满足用户的需求,是应用程序中处理用户交互的部分,通常Controller负责从View读取数据,控制用户输入,并向Model发送数据。
它的优势表现在:
低耦合性:MVC的视图层和业务层是分离的,如果项目的业务流程或业务规则有所更改,只需要更改MVC的Model层,不需要重新更改编译View和Controller的代码内容。
高可重用性:MVC模式允许不同类型的View访问相同的服务器端代码,多个View可以共享一个Model,它包括任何WEB浏览器(HTTP)或无线浏览器(WAP),因为这些表示所需要改变的只有View层的实现方式,Model层和Controller层不需要做任何改变。
低生命周期成本:MVC降低了用户界面开发和维护的技术需求,从而降低了生命周期成本
快速部署:使用MVC模式可以大大缩短开发时间,允许后端开发人员只关注业务逻辑,而前端开发人员只需要关注页面的表现形式。
高可维护性:前后端分离使得WEB应用程序更易于维护和修改。
SpringMVC是Spring生态圈中的WEB-MVC框架。
SpringMVC和Spring的关系可以从如下两个角度理解:
水平角度:SpringMVC是Spring生态圈中的一个功能模块,两者是包含与被包含的关系;
垂直角度:SpringMVC是建立在Spring核心功能之上的一个WEB-MVC框架,是Spring核心功能的延伸和扩展。
WEB应用程序的主流开发技术有 3 种:servlet,php,.net。
(代码见如下链接:[https://www.gengruiblog.cn/](https://www.gengruiblog.cn/))
3.ORM程序技术
1.JDBC操作数据步骤
a.注册驱动
b.连接
c.获取statement对象
d.执行SQL语句返回结果集
e.遍历结果集
f.关闭连接释放资源
2.ORM是对象(Object)、关系(Relational)、映射(Mapping)的缩写,是一种用于实现面向对象编程语言里不同类型系统的数据之间转换的程序技术。
3.ORM会把对SQL的操作转换为对象的操作,从而让程序员使用起来更加方便和易于接受。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。由于类和表之间、属性和字段之间建立起了映射关系,所以SQL对表的操作就可以转换为对象的操作。程序员从此无需编写SQL语句,由框架根据对象的变化及映射关系自动生成SQL语句,这就是ORM的作用
4.优势:提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。ORM提供了对数据库的映射,不用SQL直接编码,能够像操作对象一样从数据库获取数据。
(代码见如下链接:[https://www.gengruiblog.cn/](https://www.gengruiblog.cn/))
4.Mybatis简介
MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射
与其它ORM框架不同,MyBatis没有将Java对象与数据表关联起来,而是作为Java方法和SQL语句的桥梁,我们一般称它为半ORM框架。
其功能如下:
1.方便地定制化SQL,操作数据库对象
2.使用简单的XML或注解来配置和映射原生类、接口和Java的POJO为数据库中的记录
3.提供强大的动态SQL功能,可以更加灵活地使用SQL语句
4.提供插件增强机制,可以轻松集成其它插件
Hibernate
全自动化ORM框架,数据库移植性好,基础业务几乎不需要写SQL
易学难精,上手简单但熟练使用需要阅读大量文档,框架结构复杂。
MyBatis
半自动化ORM框架,数据库移植性一般,基础业务仍需写SQL,但可以通过基础Mapper来简化。易学易用,上手简单,结构精简清晰,易深入学习
Hibernate适合在需求明确、业务固定的项目中使用,如OA、ERP项目
MyBatis适合在需求多变,快速迭代的项目中使用,如互联网的电商项目
(代码见如下链接:https://www.gengruiblog.cn/)
(二)spring工程搭建
Spring的核心特性就是IOC和AOP,之前整理了SpringIOC,这篇文章就来写一下SpringAOP(Aspect Oriented Programming),即:面向切面编程。
面向切面编程是指通过预编译和运行期动态代理的方式实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
在学习SpringAOP之前我们需要了解什么是代理模式。
文中提到的基于接口的JDK动态代理与基于子类的CGLib动态代理两种动态代理的方式都是实现SpringAOP的基础。
在spring中,虽然引入了AspectJ的语法,但是他本质上使用的是动态代理的方式,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。
如果目标对象有接口,优先使用JDK 动态代理,如果目标对象没有接口,则使用CGLib动态代理。
**简单转账功能**
我们新建Maven项目名为“spring-aop“,设置好Maven版本、配置文件以及Maven仓库。
1.**准备数据**
2.导入Spring基础包
3.导入操作数据库、连接数据库、测试需要的包
4.配置自动扫包
5.配置数据源
6.数据库连接工具类:ConnectionUtils.java
7.控制台打印结果
SpringAOP的作用就是把程序中重复的代码抽取出来,在需要执行的时候,使用动态代理技术,在不修改源码的基础上,对已有方法进行增强。
优势就是减少了重复代码,提高代码复用性,提高开发效率,使得代码的维护更加方便
在开发时通常将日志记录,数据库连接池的管理,系统统一的认证、权限管理等用面向切面的方式开发。
(代码见如下链接:https://www.gengruiblog.cn/)
(三)Spring IOC&DI
IOC(Inversion of Control 控制反转)是面向对象编程中的一种设计模式。
其最常见的方式叫做DI(Dependency Injection 依赖注入)。
通过控制反转,将实例化对象的控制权,由手动的new变成了Spring框架通过反射机制实例化。
需要使用的时候,依赖通过配置文件以及注解的方式注入到对象中。
**代码实习**
User模块实体类:User.java
User模块视图类:UserVo.java
User模块Dao层:UserDao.java
User模块Dao层实现类:UserDaoImpl.java
User模块Service层:UserService.java
User模块Service层实现类:UserServiceImpl.java
User模块Controller层:UserController.java
User模块测试类:UserTest.java
//代码见https://www.gengruiblog.cn/article/20210303.html
缺点:
1.代码耦合性太强 不利于程序的测试
2. 代码也不利于扩展
解决方式:
1.Spring的IOC完美的解决了这一点
2.对象的实例化由Spring框架加载实现,放到Spring容器中管理,避免了我们手动new对象
3.有需要用到对象实例依赖,直接向Spring容器要,让他注入即可
4.而一旦涉及到对象的实例修改,那么只需更改Spring加载实例化对象的地方,程序代码无需改动
5.从而降低耦合,提升扩展性
**引入IOC(XML)**
要想使用SpringIOC首先需要导入Spring框架基础包并且添加Spring核心配置文件。
将依赖交给Spring的beanFactory管理。
**User模块测试类:UserTest.java**
1.读取配置文件刷新Spring容器
2.Controller由手动实例化改为从Spring容器拿取
3.把ApplicationContext传到Controller层继续使用
**User模块Controller层:UserController.java**
1.Service由手动实例化改为从Spring容器拿取
2.把ApplicationContext传到Service层继续使用
**User模块Service层实现类:UserServiceImpl.java**
1.Dao由手动实例化改为从Spring容器拿取
**缺点**
因为每一个类的实例化都需要一个bean标签,一个大型工程有很多类,配置文件的内容未免过于臃肿,维护成本高。
**解决方式**
使用注解形式实现SpringIOC
**XML改注解(IOC)**
1.核心配置文件修改
context-component-scan标签Spring框架自定义的xml标签,通过base-package属性指明需要被自动扫描实例化的类所在位置
**常用注解介绍**
@Component:一般用于通用组件类上使用的注解
@Service:一般用于业务逻辑层上使用的注解
@Controller:一般用于流程控制层上使用的注解
@Repository:一般用于数据持久层上使用的注解
依次添加注解,添加之后运行再次报错找不到bean。
其实我们在添加注解后,Spring会默认给每个bean设置id,值为类名首字母改为小写。
这次报错原因就是找不到名为”userService“的bean。
解决办法就是在注解时设置bean的id,保证可以找到bean。
//代码见[https://www.gengruiblog.cn/article/20210303.html](https://www.gengruiblog.cn/article/20210303.html)
(四)Spring AOP
Spring的核心特性就是IOC和AOP,之前整理了SpringIOC,这篇文章就来写一下SpringAOP(Aspect Oriented Programming),即:面向切面编程。
面向切面编程是指通过预编译和运行期动态代理的方式实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
在学习SpringAOP之前我们需要了解什么是代理模式
文中提到的基于接口的JDK动态代理与基于子类的CGLib动态代理两种动态代理的方式都是实现SpringAOP的基础。
在spring中,虽然引入了AspectJ的语法,但是他本质上使用的是动态代理的方式,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。
如果目标对象有接口,优先使用JDK 动态代理,如果目标对象没有接口,则使用CGLib动态代理。
(代码见如下链接:[https://www.gengruiblog.cn/](https://www.gengruiblog.cn/))
(五)Mybatis工程搭建
在MyBatis工程搭建 中我们主要讲解的是 MyBatis 如何连接数据库,具体执行 SQL 语句使用的是 JDBC 方式。
在MyBatis实现Mapper配置并查询数据 中我们主要讲解的是如何使用MyBatis完成查询数据的操作。
相比较查询而言,增加修改删除数据会简单一些,本章节我们会一起学习如何操作数据库。
1.我们新建Maven项目名为“mybatis-operate-database“,设置好Maven版本、配置文件以及Maven仓库。
2.因为MyBatis是一个持久层框架,所以我们在使用之前需要执行如下SQL语句准备好数据源。
3.要想使用MyBatis首先需要导入MySQL驱动包、MyBatis框架基础包并且添加MyBatis核心配置文件。
(代码见如下链接:[https://www.gengruiblog.cn/](https://www.gengruiblog.cn/))
(六)Mybatis实习Mappe配置并查询数据
在MyBatis工程搭建 中我们主要讲解的是 MyBatis 如何连接数据库,具体执行 SQL 语句使用的是 JDBC 方式。
但在实际应用中是不会选择 JDBC 来执行 SQL 的,MyBatis 提供了 Mapper 作为 Java 方法和 SQL 语句之间的桥梁,来帮助我们更好地去使用 SQL。
1.因为MyBatis是一个持久层框架,所以我们在使用之前需要执行如下SQL语句备好数据源
2.要想使用MyBatis首先需要导入MySQL驱动包、MyBatis框架基础包并且添加MyBatis核心配置文件
3.在mybatis-config.xml配置文件中添加上对应的mapper配置,新建mapper包,并在其下新建UserMapper.java类 User模块Mapper层:UserMapper.java User模块测试类UserTest.java
4.XML方式是更加强大的一种使用方式,虽然它没有注解那么方便,但是功能更强、更易维护,是 MyBatis 官方推荐的一种方式,其代码如下:
User模块Mapper层:UserMapper.java
User模块Mapper层配置文件:UserMapper.xml
User模块测试类:UserTest.java
(代码见如下链接:[https://www.gengruiblog.cn/](https://www.gengruiblog.cn/))
(七)Mybatis操作数据库
同:(五)Mybatis工程搭建
(八)SPringMVC 工程搭建
1.[使用IDEA创建Maven工程](https://www.gengruiblog.cn/article/20210228.html)
2.[IDEA配置Maven](https://www.gengruiblog.cn/article/20210301.html)
我们新建Maven项目名为“springmvc-demo“,设置好Maven版本、配置文件以及Maven仓库。
由于SpringMVC在 MVC设计模式 中是作为控制器负责前后端代码的连接,我们首先需要添加WEB文件夹用来存放前端代码。
A.右键我们的项目名 -> 选择“Add Framework Support”.
1.选择WebApplication
2.核实版本号
3.核实是否会自动创建web.xm
B.搭建配置SpringMVC,引入依赖,刷新maven等待自动下载,libraries中有了所有导入的包表示依赖引入完成。
C.配置静态资源导出
D.Spring核心配置文件
E.添加SpringMVC配置内容
1.加载注解驱动
2.静态资源过滤
3.视图解析器
F.编写代码测试
G.配置Spring容器自动扫描包
H.编写jsp
I.编写web.xml
1.配置前端控制器
2.配置初始化参数
3.设置启动级别
4.设置SpringMVC拦截请求
5.配置中文乱码过滤器
J.运行web项目
K.配置TomCat
L.运行TomCat
(代码见此链接:([https://www.gengruiblog.cn/article/20210319.html](https://www.gengruiblog.cn/article/20210319.html)))
推荐阅读
-
.NET Core 又一杀器! Web Blazor框架横空出世!
-
SpringBoot Web篇笔记(一)
-
[springboot 开发单体web shop] 7. 多种形式提供商品列表
-
结合Spring Security进行web应用会话安全管理
-
我来告诉你:VS2019开发ASP.NET Core 3.0 Web项目,修改视图后,刷新浏览器看不到修改后的效果怎么处理
-
Microsoft Dynamics CRM 批量上传web资源(非官方WebResourceUtility)并替换实体图标
-
Microsoft Dynamics CRM 批量上传web资源(非官方WebResourceUtility)并替换实体图标
-
Microsoft Dynamics CRM 批量上传web资源(非官方WebResourceUtility)并替换实体图标
-
用Web页面执行客户端程序
-
Python—Web服务器(Nginx)