一、SSM框架
1.spring是啥?
为简化企业级应用程序开发,它是一个给Java SE(Java 标准版本)/Java EE(Java 企业版本)做开发的应用框架。Spring 是一个超级粘合大平台,提供粘合其他技术和框架的能力。而且不管是 JAVA SE(C/S 架构)应用程序还是 JAVA EE(B/S 架构)应用程序都可以使用这个平台进行开发。
(1)JAVA SE(C/S 架构)和JAVA EE(B/S 架构)是啥?
java se意思就是java标准基础版,java ee就是更牛点是企业版。
C/S架构,即客户端/服务器架构:客户端发送请求到服务器,服务器处理请求并返回结果。
B/S架构,即浏览器/服务器架构:用户通过网络浏览器(客户端)与服务器进行交互。服务器负责处理业务逻辑,并与数据库或其他服务交互,然后将生成的页面或数据发送回浏览器。
1)客户端是啥(C/B/C分别是啥)?
客户端(Client):客户端是指在用户设备上运行的软件,它向服务器发送请求,并展示服务器返回的数据给用户。客户端软件通常具有用户界面,允许用户与其进行交云。
客户端(B 浏览器):
用户通过网络浏览器访问应用程序。浏览器作为客户端的界面,用户可以通过它发送请求、接收信息并与应用程序交互。浏览器负责向服务器发送HTTP请求,并渲染服务器返回的HTML、CSS和JavaScript内容,呈现给用户。
服务器(Server):服务器是指接收客户端请求、处理这些请求(如检索、存储、修改数据等操作),然后将结果或响应发送回客户端的系统。服务器通常是强大的计算机或设备,能够处理多个客户端的请求,并提供必要的资源和服务。例如,Web服务器、数据库服务器、文件服务器等。
Spring 立志于全方面的简化Java 开发。它主要采取了 3个策略:
- 面向 Bean(BOP)
- 依赖注入(DI)
- 面向切面(AOP)
Spring采用容器的概念,将需要使用的对象放到容器中,这些对象称为Spring的Bean。当这些Bean对象被使用时可以直接从容器中取出,不用重新创建,由此解决了对象的冗余问题,并且减少了开发人员的编码量。
(2)实体类和业务类是干啥用的?这代码是干啥?
左边代码:
这段代码中包含了两个类: 和 。下面我将分别解释这两个类以及实体类和业务类的概念。
实体类(Entity Class)是一个用来模拟现实世界中的实体或者对象的类,在软件开发中用于表示数据的结构。在这个例子中, 类就是一个实体类,它代表了“学生”这一实体。
在类中,有两个属性: 和 。 属性用来唯一标识一个学生,而 属性则用来存储学生的分数。此外,类中定义了一个方法 ,该方法接受一个类型的参数,并将其赋值给属性,用于设置学生的分数。
业务类(Service Class)通常包含特定的业务逻辑,用于处理与实体相关的操作,例如创建、检索、更新或删除实体。在这个例子中, 类就是一个业务类。
类定义了一个方法 ,这个方法创建了一个新的 对象,并通过调用 方法将这个学生的分数设置为4分。最后,方法返回这个新创建的 对象。
总结
- 实体类通常用于映射数据库中的表或者表示应用程序中的数据结构。
- 业务类则包含了处理实体数据的业务逻辑,例如增加、查询、修改、删除等操作。
在这段代码中, 类是一个简单的实体类,只包含了基本的属性和一个设置属性的方法。而 类是一个业务类,它包含了业务逻辑,即创建一个学生对象并给其分数赋值。在实际的应用程序中,业务类会更加复杂,包含与数据库交互、事务处理、业务规则执行等多种逻辑。
右边代码:
- 是一个Spring框架提供的注解,它用于标记一个类可以由Spring容器生成Bean实例。当Spring容器启动时,它会扫描带有注解的类,并为这些类创建对象实例,这些实例被管理在Spring的应用上下文中。
- 是Spring框架提供的注解,用于自动注入依赖。在这里,它告诉Spring框架在创建类的实例时,自动从Spring上下文中找到的Bean实例,并将其注入到属性中。这种依赖注入机制简化了资源的管理和配置。
2.MyBatis框架是啥?
MyBatis是一个半自动化的持久层框架,它提供了一种既灵活又简化的方式来处理Java应用程序中的数据库操作,但它不会管理数据库结构的创建和维护。提供了简化数据库编程工作的方法。它通过封装JDBC(Java Database Connectivity)操作,让开发者可以避免直接与JDBC API打交道,从而简化了代码并减少了出错的可能性。
①MyBatis对jdbc的操作数据库的过程进行封装
MyBatis对JDBC的操作进行了封装,意味着它隐藏了许多与数据库交互时需要的底层细节。开发者不需要手动执行如下操作:
- 注册数据库驱动
- 创建数据库连接(Connection)
- 创建执行SQL语句的Statement或PreparedStatement
- 手动设置SQL语句中的参数
- 执行SQL语句并处理结果集(ResultSet)
②MyBatis在java和sql之间提供更灵活的映射方案
MyBatis将sql语句和方法实现,直接写到xml文件中,允许开发者将SQL语句和Java对象及其方法关联起来。这些映射通常定义在XML文件中,这样做的好处是将SQL语句从Java代码中分离出来,实现了解耦。这样,当SQL语句需要修改时,不需要改动Java代码,只需要修改XML配置文件即可。此外,MyBatis只负责sql, javaee需要java基础吗 建库建表的工作由程序员完成。
MyBatis本质是一个ORM框架,ORM框架的全名为(Object Relational Mapping)即对象关系映射,其主要作用是将数据库数据映射到常用的Java对象。 MyBatis在SSM中是数据传输层框架,专业术语称之为持久层框架。MyBatis负责将数据库中查询的信息封装成Java对象.
(1)持久层是啥?
持久层(Persistence Layer) 是软件架构中负责管理数据存取操作的部分,它充当了应用程序和数据库之间的桥梁。持久层的主要职责是将程序中的对象的状态持久化到数据库中,以及从数据库中检索对象状态。换句话说,它就是用来执行数据库操作的代码,包括插入、更新、删除和查询等。
3.Spring MVC是啥?
SpringMVC框架是基于MVC模式,使用Java语言开发实现的一个轻量级 Web 框架。
SpringMVC是Spring家族的一员,正因为这一点,通过简单的配置,就能够让SpringMVC框架和Spring容器一起使用。
SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。SpringMVC中的核心类是DispatcherServlet,由此可以看到它也是一个Servlet,顶层是实现的Servlet接口的。
(1)这段话看不懂
Spring MVC是Spring框架的一部分,它实现了Web应用程序中的Model-View-Controller(MVC)设计模式。在MVC设计模式中,应用程序被分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),它们各自负责不同的任务:
- 模型(Model):代表应用程序的数据结构,通常包含业务逻辑。
- 视图(View):负责渲染用户界面,通常是HTML页面。
- 控制器(Controller):处理用户的请求,基于模型执行业务逻辑,并选择视图来渲染响应。
Spring MVC的工作流程
当一个请求到达Spring MVC应用程序时,它首先被一个中央的Servlet,即接收。是Spring MVC的核心控制器,负责协调其他组件来处理请求。以下是Spring MVC处理请求的基本步骤:
- 请求拦截:接收到HTTP请求后,会根据配置将请求映射到相应的控制器(Controller)。
- 控制器处理:控制器接收请求并调用相应的服务层或业务层方法来处理业务逻辑,并返回一个模型对象,该对象包含了视图所需展示的数据。
- 模型填充:模型对象中的数据是从数据库或其他存储系统检索并填充而来。
- 视图解析:将模型数据传递给视图解析器(View Resolver),它决定哪个视图应该被用来渲染响应。
- 视图渲染:视图使用模型中的数据进行渲染,生成最终的用户界面(通常是HTML页面)。
- 响应返回:渲染完成的视图被返回给客户端,作为HTTP响应。
DispatcherServlet
是Spring MVC框架的关键组件,它扮演了前端控制器(Front Controller)的角色。所有进入应用程序的请求都会先经过这个中央控制器,然后由它负责将请求分发到相应的处理器。继承自Java Servlet API中的类,并通过在web.xml文件或者通过Java配置中注册,来配置它作为Web应用程序的入口点。
由于也是一个Servlet,它底层实现了Java Servlet API中的接口,这使得它能够与Servlet容器(如Tomcat、Jetty等)无缝集成,并处理HTTP请求和响应。
总结来说,Spring MVC框架是围绕设计的,它处理所有的请求并将其分派给正确的控制器,同时还协调视图和模型之间的交互,最终生成并返回HTTP响应。
Spring MVC特点
Spring MVC是目前企业级开发常用的MVC框架,专业术语称MVC为“模型-视图-控制器模式”。MVC框架是Model、View和Controller三个模块的缩写,它负责规划整个项目的目录结构以及业务交互。
Spring MVC在SSM框架中负责处理前端的请求并返回相应的结果,其与Spring的集成度非常高,可以在SSM中表现出良好的复用性和扩展性。
Spring MVC优点
不同于以前框架只提供接口,然后让使用者自己根据接口写实现类来实现功能,SpringMVC提供了一整套完善的组件,可以直接使用。 使用SpringMVC框架提供这些工具非常简单,通过一些简单的注解就可以使用Spring MVC的绝大多数功能,不需要编写繁琐冗长的代码。 SpringMVC以强大的Spring容器为基础,与Spring的亲和度很高,不需要额外的配置就可以在Spring中使用。
4.SSM框架是啥?
SSM框架由Spring+Spring MVC+MyBatis组成,是标准的MVC设计模式,将整个系统划分为显示层,Controller层,Service层,DAO层四层,分别由各个框架进行管理。
SSM框架是Web企业级开发常用的框架,它可以在开发中辅助编程人员快速搭建一个完整的Web应用项目。
SSM分层结构分析
SSM整体结构可以拆分为三个部分,分别为MyBatis、Spring MVC和Spring。
MyBatis框架负责和数据库交互,Spring MVC负责与前端交互,Spring负责掌控整个系统的运行。
二、Spring
(一)spring概述
1. 核心理念:控制反转IoC 和 面向切面编程
①IoC概念支撑着Spring对Bean的管理
②AOP技术对Spring中事务管理等功能起到关键作用。
Spring提供了展示层、持久层以及事务管理等一站式的企业级应用技术。
2. Spring体系结构:
Spring框架采用分层架构,由数据访问、Web交互层、AOP框架层、核心容器和测试模块组成。 数据访问层主要是对数据流转的控制操作。Web交互层功能的实现基于Spring核心容器之上,它提供了Web应用的各种工具类。AOP框架允许开发者自定义方法拦截器和切入点,为面向切面编程提供多种实现方法。
(1)说的啥意思啊?
- 数据访问层:数据访问层主要负责与数据库或其他数据存储系统进行交互,包括数据的读取、写入、更新和删除等操作。在Spring框架中,数据访问层通常使用Spring的JDBC、ORM(如Hibernate)或其他持久化技术来实现数据的访问和管理。
- Web交互层:Web交互层是建立在数据访问层之上的,它提供了处理Web请求和响应的功能。这一层通过Spring MVC框架来实现,处理用户的HTTP请求,并将其分发到相应的控制器进行处理。Web交互层还包含与用户界面相关的逻辑,如表单验证、数据绑定和视图渲染等。
- AOP框架层:AOP(面向切面编程)框架允许开发者通过定义切面、切入点和通知等来实现横切关注点的模块化。AOP的目标是减少代码的重复性,将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,并通过切面的方式进行统一管理。Spring框架提供了AOP的实现,可以在不修改原有业务逻辑的情况下,通过声明式的方式将横切关注点应用于特定的方法或类上。
- 核心容器:核心容器是Spring框架的核心部分,它提供了IoC(控制反转)和DI(依赖注入)容器的实现。IoC指的是将对象的创建和依赖关系的管理交给容器来完成,而不是通过代码显式地创建和管理对象。DI是IoC的一种实现方式,它通过将依赖关系注入到对象中,解耦了组件之间的依赖关系。Spring的核心容器为开发者提供了管理Bean、配置依赖关系和实现对象之间的松耦合等功能。
- 测试模块:Spring框架还提供了用于测试的模块,帮助开发者编写单元测试、集成测试和端到端测试等。这些测试模块提供了各种工具和类,用于简化测试过程,如模拟对象、依赖注入和断言工具等。
(1)数据访问及集成
JDBC模块全称是Java数据库连接(Java Database Connectivity),JDBC模块利用JDBC抽象层来间接控制所有的数据库连接代码,大大降低了编码的复杂性。
ORM模块又称对象关系映射模块,这些主流的对象关系映射框架包括MyBatis、Hibernate和JDO等,除此之外,该模块可将对象关系映射框架与Spring提供的数据库连接模块结合使用。
OXM模块与ORM框架类似,不过OXM提供的是XML和对象之间的映射,OXM是“Object XML Mapper”的缩写,全称为XML对象关系映射。
JMS模块是“Java Message Service”的缩写,全称是Java消息传递服务,在Spring的4.1版本之后,支持与Spring-message模块的集成。
Transaction模块的功能是事务管理,它主要负责管理所有POJO类,同时处理声明式和编程式事务。
(2)Web交互层
Web模块提供了基本的面向Web的集成功能,如文件上传,Servlet监听器,面向Web的应用程序上下文等。
Servlet模块也称为Spring-web MVC模块,包含Spring的模型、视图、控制器以及Web应用程序的REST Web服务实现。
WebSocket模块是Spring4版本的新增模块,用于适配不同的WebSocket引擎,并能够全面支持WebSocket。
(3)AOP框架层
AOP模块译为面向切面编程,此模块的实现允许开发者自定义方法拦截器和切入点。
Aspect模块主要用于集成AspectJ,Aspect是一个功能强大且成熟的AOP框架,为面向切面编程提供多种实现方法。
Instrumentation模块提供了类植入的支持和类加载器的实现,通常在特定的服务器使用。
(4)核心容器层
Beans和Core模块是Spring中较为核心的模块,其提供了IoC和DI思想的实现,规定了创建、配置和管理Bean的方式。
Context模块在Beans和Core模块的基础之上提供了框架式Bean的访问方式,通过ApplicationContext接口可以获取上下文信息。
SpEL模块提供了一个强大的表达式语言,该语言用于在Spring运行时查询和操作对象。
(二)Spring的核心体现
1. IoC与DI
IoC是一个设计思想,(Inversion of Control(控制反转)的缩写)指将对象的控制权交由容器控制。Spring采用这种思想后,开发人员无需编写管理依赖关系的代码,由Spring容器根据配置自动完成。
DI为Dependency Injection(依赖注入)的缩写,是IoC思想的一种体现,即通过注入方式来避免调用类对其他类的强依赖关系,方便开发,减少代码冗余。
举例:
2. Spring容器
Spring容器管理应用程序中的各种组件(Bean),包括它们的生命周期、依赖关系、配置信息等。
Spring容器的概念有多种实现接口,重要的实现接口是BeanFactory和ApplicationContext。
(1)BeanFactory接口
BeanFactory是Spring框架最基本的IoC容器接口,提供了最基本的Bean管理功能(封装了许多与Bean有关的抽象方法,其中常用的有获取Bean信息的方法和判断此Bean是否单例的方法)。负责管理Bean的生命周期和依赖注入。
BeanFactory的实现类通常是XmlBeanFactory,它通过读取XML配置文件来创建和管理Bean对象。
BeanFactory延迟加载(lazy loading)机制,即在第一次请求Bean时才进行实例化和初始化,这样可以节省资源和提高性能。
(2)ApplicationContext接口
ApplicationContext接口在BeanFactory的基础上提供了更多的功能和扩展,是Spring框架中更常用的容器接口。ApplicationContext是BeanFactory的子接口,直译又称作应用上下文。
它包含了BeanFactory中所有的功能,还包括了国际化支持、事件传播、资源访问、AOP代理等功能。
ApplicationContext的实现类有ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、AnnotationConfigApplicationContext等,它们可以从不同的位置加载配置文件或注解配置,创建Spring容器并管理Bean对象。
ApplicationContext的子类ClassPathXmlApplicationContext是开发中常用的工具类,它可以通过指定一个配置文件来完成容器的创建,在配置文件中通产含有配置完成的Bean对象。容器创建完成后,其中的Bean对象将会被创建完毕,开发人员可以根据Bean的名称获取容器中的Bean对象、Bean类型等其他信息。
在使用classPathXmlApplicationContext 时,将配置文件的类路径传入其中,容器就可以自动解析配置文件中的配置,将Bean对象加入到Spring容器中。
(三)spring示例
1 Spring依赖下载(啊啊啊我咋记得我就没下,但是也能用,咋肥四)
首先访问官方的Spring JAR包下载地址。
然后访问官方Commons Logging包的下载地址,下载commons-logging-1.2-bin.zip包。
2.Web环境搭建
(1)创建项目:Spring的运行不需要Web环境的支持,但是使用Spring来做Web开发时,需要配置相应的Web环境,因此,首先搭建Web环境,在新建的项目中添加Web环境支持。
单击New Project创建项目,在弹出的新建框中选中Java项目,随后单击Next。进入下一步之后,再次单击Next
最后一步,填写此项目的项目名及目录,填写完毕后单击Finish。
(2)为项目添加Web框架
项目创建完成以后,右键单击项目,在弹出的快捷菜单中添加框架支持
在弹出框架支持框后,勾选Web Application框架以及Create web.xml,单击OK按钮,完成添加。
(3)添加依赖包
右键点击WEB-INF文件夹,在弹出的快捷菜单中选择New→Directory,创建lib文件夹。
将之前下载完成的Spring包中lib文件夹下的所有JAR包,commons-logging包和下载的AOP注解依赖包复制到lib文件夹下。
选中所有的JAR包,右键单击之后,弹出快捷菜单,单击Add as Library,将JAR包添加到Library。
右键单击File后,在弹出的快捷菜单中单击Project Structure,打开项目结构。
在项目结构面板中单击Artifacts,在中间出现的页面中,选中发布包,随后在右侧双击commons-logging包,将其添加到现有项目中,最后单击apply按钮将此包应用到项目中。
(4)配置tomcat
单击操作栏中的下拉按钮,单击Edit Configurations,进入配制页面。
单击页面左上角的“”,在弹出的快捷菜单中选择Tomcat Server下的Local,在右侧出现的面板中配置Tomcat,单击Configure,并选择本地安装的Tomcat后,单击Deployment,即可进入war包发布页面。
进入war包配置界面后,单击加号,在下拉框中单击Artifact,将war包添加进Tomcat,随后单击Apply。至此,Web环境搭建完毕。
3. Bean的添加与获取
(2)编写配置文件
单击src,在弹出的快捷菜单中单击New→XML configuration File→Spring Config创建Spring配置文件,命名为applicationContext。
创建完毕后,打开目录结构,随后单击Modules,在中间面板中选择springTest中的Spring,之后单击右侧面板的“+”,在弹出面板中勾选新建的applicationContext文件,单击OK按钮,再单击Apply按钮,完成配置操作。
编写配置文件,其中<bean>元素为指定将一个对象注入容器,id为此Bean对象的别名,此别名将会在获取此Bean时用到,class为指定需要装配对象的路径,
(4)容器加载配置文件
在src下创建一个Test类,利用ApplicationContext容器的子类来加载配置文件,此配置文件路径为相对于src的路径
使用getBean()方法获取classPathXmlApplicationContext容器中名为student的Bean对象
总结:本章首先讲解了IoC容器的概念与Spring中Bean对象的概念,接下来通过示例讲解了Bean对象的添加与获取。通过本章的学习,读者需要掌握向Spring容器中添加Bean对象的方法。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/24669.html