SSM框架学习

 

目录

一、 什么是框架:................................................................................................................................................ 1

1. 定义:可重用的、半完成的应用程序、通过类互相组合而成的........................................... 1

2. 为什么要开发框架:........................................................................................................................... 1

① 业务逻辑组件:程序要处理的具体业务逻辑(方法)...................................................... 2

② 应用系统服务组件:程序就像控制、事务处理、安全性、输入校验、异常处理..... 2

二、 SpringMVC...................................................................................................................................................... 2

① 控制程序流转的控制器(controller).......................................................................................... 3

② 封装数据处理的数据模型(Model)................................................................................................ 3

③ 负责展示数据的视图(view)............................................................................................................ 3

a) 提醒:需要程序员开发的是要程序员做一下配置就可以。........................................... 5

三、 Mybatis........................................................................................................................................................... 8

1. Mybatis框架.......................................................................................................................................... 8

1) Mybati框架介绍.......................................................................................................................... 9

2) Mybatis框架使用..................................................................................................................... 10

2. Mybatis的优缺点.............................................................................................................................. 12

四、 Spring........................................................................................................................................................... 12

1. spring概述......................................................................................................................................... 12

(1) 海纳百川:作为资源的整合、管理软件中的对象...................................................... 12

2. Spring架构图介绍............................................................................................................................ 12

3. 主要jar组成...................................................................................................................................... 15

4. Spring使用......................................................................................................................................... 16

(1) IOC通过spring容器创建对象........................................................................................ 16

(2) DI通过注入依赖为属性赋值............................................................................................. 17

a. 构造注入:构造方法中的属性参数赋值............................................................................ 17

b. Setter注入:方法中的属性参数赋值............................................................................... 17

5. Spring基础主要是IOD/DI.............................................................................................................. 17

6. 为什么要使用Spring........................................................................................................................ 19

7. 什么是事务?...................................................................................................................................... 20

8. 编程式事务和声明式事务的区别?.............................................................................................. 20

a. 两者的区别:编程式事务侵入性比较强,但处理力度更精细.................................... 20

五、 SSM框架....................................................................................................................................................... 20

1. 对ssm框架的认识............................................................................................................................. 20

 

一、 什么是框架:

1.**定义:可重用的、半完成的应用程序、通过类互相组合而成的**

2.**为什么要开发框架:**

(1)**抽取应用程序通用功能:应用程序大体由两类不同性质的组件组成;**

①**业务逻辑组件:程序要处理的具体业务逻辑(方法)**

②**应用系统服务组件:程序就像控制、事务处理、安全性、输入校验、异常处理**

1)**例如:一个银行系统和一个学生管理系统,他们处理业务方面大不相同,不可得到重复利用,而应用系统服务组件在不同的系统中可以得到很好的重,从而被做成一个半成品程序**

(2)**统一J2EE架构和技术:所以规范J2EE技术来实现自己的架构,可以规范B/S页面规范、Java编码规范、日志规范,一旦统一编码规范就可以提高程序的可读性。J2EE技术多样如果不统一,会造成三不利:**

1)**不利后续维护和管理**

2)**不利开发人员的沟通交流**

3)**不利应用程序的维护和管理**

a.**J2EE:分布式的服务器应用程序设计环境,拥有很对技术集合体,如:HTML、JSP、JDBC、XML、WebService,一个java环境,它提供了:1、程序应用的一个运行基础框架环境;2、一套用来创建应用的javaAPI,所有J2EE是以Java为规范的一门技术**

 

 

 

二、**SpringMVC**

1.**SpringMVC概述**

(1)**概述:是一个基于mvc的web框架,是spring框架的一个模块,所以Spring和SpringMVC无需通过中间整合层进行整合,如下图:**

微信图片_20190529131511

(2)**SpringMVC设计模式**

①**控制程序流转的控制器(controller)**

②**封装数据处理的数据模型(Model)**

③**负责展示数据的视图(view)**

符合MVC设计思想的软件应该保证上面三部分相互独立、互不干扰,每一个部分只负责自己擅长的部分

2.**Sping MVC工作原理**

img

a.**向服务器发送Http request请求,请求被前端控制器(DispatcherServlet)捕获**

b.**前端控制器根据xml文件中的配置(或者注解)对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用处理器映射器(HandlerMapping)获得处理该请求的Handler以及Handler对应的拦截器,最后以 HandlerExecutionChain 对象的形式返回。**

c.**前端控制器根据获得的Handler,选择一个合适的处理器适配器(HandlerAdapter)去执行该Handler。**

d.**处理器适配器提取request中的模型数据,填充Handler入参,执行处理器(Handler)(也称之为Controller)(Controller--> service --> Dao -->** 数据库).

e.**Handler(Controller)执行完成后,向处理器适配器返回一个ModelAndView对象,处理器适配器再向前端控制器返回该ModelAndView对象(ModelAndView只是一个逻辑视图)。**

f.**根据返回的ModelAndView,前端控制器请求一个适合的视图解析器(ViewResolver)(必须是已经注册到Spring容器中的ViewResolver)去进行视图解析,然后视图解析器向前端控制器返回一个真正的视图View(jsp)。**

g.**前端控制器通过Model解析出ModelAndView中的参数进行解析,最终展现出完整的View并通过Http response返回给客户端。**

a)**提醒:需要程序员开发的是要程序员做一下配置就可以。**

i.**前端控制器DispatcherServlet(不需要程序员开发)**

作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度

ii.**处理器映射器HandlerMapping(不需要程序员开发)**

作用:根据请求的url查找Handler

iii.**处理器适配器HandlerAdaper(不需要程序员开发)**

作用:按照特定规则(HandlerAdaper要求的规则)去执行Handler

iv.**处理器Handler(需要程序员自己开发)**

v.**视图解析器ViewResolver(不需要程序员开发)**

作用:进行试图解析,根据逻辑试图名解析成真正的视图(view)

vi.**试图View(需要程序员开发的jsp)**

View**是一个接口,实现类支持不同的View类型(jsp\pdf)**

3.**SpringMVC的应用**

(1)**在pom.xml中引入SpringMVC所需的jar包**

(2)**在web.xml中配置SpringMvc,主要配置:**

img

1)**(servlet)SpringMVC前端控制器**

2)**(servlet)配置SpringMVC的核心配置文件位置,默认在WEB-INF,默认名字为springmvc-servlet.xml**

3)**(servlet-mapping)配置拦截所有请求(除jsp外),所有请求都要经过前端控制器**

(3)**在main/resource中创建springmvc-config.xml文件,主要配置:**

img

1)**配置前端放行静态资源html/js/css等,否则静态资源无法访问**

2)**配置注解驱动,用于识别注解**

3)**配置需要扫描的包,如果扫描到的类上有@Controller的类会去自动注册Bean对象**

4)**配置内部资源视图解析器**

(4)**在main/java中创建测试类,方法名要与注释一样,返回值有三种:**

1)**返回pags中的文件,直接返回pags中的视图**

2)**转发:地址不变,返回另一个页面**

3)**重定向:获取另一个资源,地址发生改变**

4.**SringMVC中的web.xml和springmvc-config.xml一些不知道的**

(1)**War工程为什么要有web.xml:**

该servelt会在服务启动的时候立即加载,并且在加载时需要一个springMVC配置文件,默认情况下,会去应用程序文件夹的web-info下找[servlet-name].xml文件,也可以把springMVC配置文件放到程序文件夹的任何地方,用init-param描述,contextConfigLocation描述的就是配置文件所在位置,这样DispatcherServlet会去加载springmvc-config.xml文件,并根据该文件信息创建一个WebApplicationContext容器对象,也成为上下文环境。这个对象继承与ApplicationContext容器,他的初始化与BeanFactory、ApplicationContext有所区别,因为WebApplicationcontext需要ServletContext实例,也就是说他必须在拥有Web容器的前提下才能完成启动SpringWeb应用上下文的工作。有了WebApplicationcontext,就可以使用spring的IOC和AOP等其他功能了。

DispatcherSerlet**是前端控制器,核心功能是分发请求,分发给对应的java类,在springMVC中称为Handle**

spring2.5**之前控制器唯一的方法就是实现org.springframework.web.servlet.mvc.Controller接口,并且只能只处理单一动作的单一请求spring2.5之后控制器可以支持注解的方式,并且无需实现任何接口,可以支持同时处理多个请求.**

基于实现Controller接口的控制器的web应用,配置springmvc-config.xml。基于注解的控制器的web应用,配置springmvc-config.xml。视图解析器如果配置前缀和后缀,调用视图时会自动拼接前缀和后缀

 

三、**Mybatis**

1.**Mybatis框架**

img

 

1)**Mybati框架介绍**

a.**sqlMapConfig.xml的配置,该配置时Mybatis的核心配置,通过配置可以生成SqlSessionFactory对象,也就是SqlSession的工程**

b.**基于SqlSessionFactory可以生成SqlSession(会话)对象,类似于JDBC的Connection,用于连接数据库**

c.**Executor是SqlSession的底层对象,用于执行SQl语句**

d.**MapperStatment对象是sqlSession底层,用于接受输入映射(SQl语句参数),以及输出映射(SQL查询/修改的结果映射成相应结果)**

img

2)**Mybatis框架使用**

a.**创建SqlMapConfig.xml配置文件,规定在src即源码根下创建文件**

b.**创建pojo(简单的java对象)包,实际就是普通的javaBean(java容器),也叫实体类,用于封装数据库获取的一系列信息,例如Emp,封装表Emp中的id、name、jod、salary,而属性一般私有的,所以会提供set&get方法**

c.**创建Empmapper.xml,放在pojo包中与Emp实体类一起,用于映射是同类Emp**

a)**提醒:**

SqlMapConfig**。Xml属于全局配置文件,里面有执行mybatis的环境、管理事务、连接池、连接数据库、引入Mapper.xml等配置;**

Mapper.xml**编写sql语句,里面配置该文件的名字namespce,程序执行会根据名字找到该文件;id值,用于程序找到文件后执行哪个id的语句,所以要求值不重复**

b)**其中有where元素、set元素、foreach元素**

c)**两种执行程序方法:**

i.**自己编写映射文件的位置**

img

ii.**通过接口的映射让程序返回映射文件的位置(接口名要与Mapper.xml中的namespace一样),如下Mapper.xml**

img

img

执行类

img

 

iii.

 

 

2.**Mybatis的优缺点**

①**优点:SQL写在XML中,便于统一管理的优化,提供映射标签,支持对象和数据库的orm字段关系映射,可以对SQL进行优化**

②**SQL工作量大,mybatis的移植性不好,不支持级联**

四、**Spring**

1.**spring概述**

(1)**海纳百川:作为资源的整合、管理软件中的对象**

2.**Spring架构图介绍**

Spring(SSM框架学习.assets/clip_image022.jpg)  什么是Spring - jiaxiaoyuan1204 - 武陵源的传奇

 模块说明
1. 核心容器Spring Core 核心容器,提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2. Spring Context Spring**上下文,是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。**
3. Spring AOP 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。可以很容易地使 Spring框架管理的任何对象支持AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,就可以将声明性事务管理集成到应用程序中。
4. Spring DAO JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
5. Spring ORM Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
6. Spring Web Web**上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。**
7. Spring MVC**框架** MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现**。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。**

Spring 框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

3.**主要jar组成**

 模块说明
1. org.springframework.core 核心工具包,其他包依赖此包
2. org.springframework.beans 核心,包括:配置文件,创建和管理bean等
3. org.springframework.aop 面向切面编程,提供AOP的实现
4. org.springframework.context 提供IoC功能上的扩展服务,此外还提供许多企业级服务的支持,邮件、任务调度、JNDI定位、EJB集成、远程访问、缓存以及多种视图层框架的支持
5. org.springframework.web.mvc 包含SpringMVC应用开发时所需的核心类
6. org.springframework.transaction 为JDBC、Hibernate、JDO、JPA提供一致的声明式和编程式事务管理
7. org.springframework.web 包含Web应用开发时所需支持类
8. org.springframework.aspects 提供对AspectJ框架的支持
9. org.springframework.test 对junit等测试框架的简单封装
10. org.springframework.asm 3.0后提供自己独立的,反编译
11. org.springframework.context.support Context的扩展支持,用于mvc方面
12. org.springframework.expression Spring表达式语言
13. org.springframework.instument 对服务器的代理接口
14. org.springframework.jdbc 对jdbc的简单封装
15. org.springframework.jms 为简化jms api的使用而做的简单封装
16. org.springframework.orm 整合第三方orm,如hibernate/mybatis
17. org.springframework.web.servlet 增强servlet

 

4.**Spring使用**

(1)**IOC通过spring容器创建对象**

a.**在Maven中的pom.xml:配置spring相关依赖包**

b.**在main/resource源目录:创建applicationContext.xml**

i)**文件内容主要有:声明bean对象,标志id,类目录bean对象的全路径**

img

b)**在main/java中:创建测试类**

i.**加载spring核心文件applicationContext,**

ii.**从spring容器中获取bean对象**

img

(2)**DI通过注入依赖为属性赋值**

a.**构造注入:构造方法中的属性参数赋值**

b.**Setter注入:方法中的属性参数赋值**

5.**Spring基础主要是IOD/DI**

(1)**IOC(Inversion of Controller):它是把传统程序代码直接操控对象的调用全交给容器(Bean),通过容器来实现对象组件的装配和管理,所谓控制反转就是对组件对象权的转移,从程序代码转移到容器中**

传统方式创建一个老师,并输出传统和传统的改进对输出都一样没有变化,只不过接口可以有很多人的共性
传统改进 创建一个接口人,老师的类可以实现接口,学生的类也可以实现接口  
spring**方式** a. 先在类包里创建一个spring的配置文件spring-crg.xml,内容略······ b. 需要把一些bean设定到spring的配置文件中,例如把老师的类的这个bean设定进取,然后配置文件内容,列出主要部分<bean id="thePerson" class="com.liumiao.demo.spring.Teacher"> </bean> 使用spring来设定人物对象是老师还是学生都很方便,且编写代码很少

img

(2)**DI(Dependency Injection):DI称为注入依赖,传统中需要自己new对象,调用者和被调用这耦合度高,这样不利于软件的移植和维护。在spring中通过IOC容器中会动态的向某个对象提供它所需的其它对象,不想以前new出来,脱俗点通过容器就是给属性赋值。注入有:构造注入、setter注入、值注入、propertier方式值注入、注解注入、java配置注入**

①**构造注入:在一个类构造方法中有一个属性需要需要赋值,我们可以通过spring的依赖注入,通俗就是给构造方法传参数,优点强制你注入;缺点:构造参数多看起来不好看**

 

img

②**setter注入:给类中的方法传参数,可能会有空值的注入,使用时可以给默认值**

img

③**值注入:通过set方法给属性赋值,其中controller也可以值注入,而且有三种索引方法赋值**

a.**根据下标索引**


b.**根据属性名索引 张三**

c.**根据属性类型索引**

 

img

6.**为什么要使用Spring**

①**方便、解耦**

②**spring能够很好的和各大框架整合**

③**Spring通过IOC容器管理了对象的创建和销毁 工厂模式(设计模式 )**

④**声明式事务的支持:在使用hiberna、mybatis的时候,不用每次都编写提交事务的代码,可以用spring的AOP来管理事务**

⑤**本质是管理软件中的对象,即创建对象和维护对象之间的关系**

 

7.**什么是事务?**

(1)**定义:事务由一种机制,可以将一系列数据库更改归入一个逻辑单元,所以事务具有(ACID)原子性、一致性、隔离性、持久性这几种属性**

(2)**什么是分布式事务?**

8.**编程式事务和声明式事务的区别?**

(1)**编辑式事务:需要在代码中直接加入处理事务的逻辑,在代码中显示调用commit()、rollback、等事务相关方法,需要自己开启事务和关闭事务**

(2)**声明式事务:在方法外围添加注解或直接在配置文件中定义,方法需要事务处理的时候,spring会在方法前后拦截并添加事务**

a.**两者的区别:编程式事务侵入性比较强,但处理力度更精细**

五、**SSM框架**

1.**对ssm框架的认识**

 

目录

一、 什么是框架:................................................................................................................................................ 1

1. 定义:可重用的、半完成的应用程序、通过类互相组合而成的........................................... 1

2. 为什么要开发框架:........................................................................................................................... 1

① 业务逻辑组件:程序要处理的具体业务逻辑(方法)...................................................... 2

② 应用系统服务组件:程序就像控制、事务处理、安全性、输入校验、异常处理..... 2

二、 SpringMVC...................................................................................................................................................... 2

① 控制程序流转的控制器(controller).......................................................................................... 3

② 封装数据处理的数据模型(Model)................................................................................................ 3

③ 负责展示数据的视图(view)............................................................................................................ 3

a) 提醒:需要程序员开发的是要程序员做一下配置就可以。........................................... 5

三、 Mybatis........................................................................................................................................................... 8

1. Mybatis框架.......................................................................................................................................... 8

1) Mybati框架介绍.......................................................................................................................... 9

2) Mybatis框架使用..................................................................................................................... 10

2. Mybatis的优缺点.............................................................................................................................. 12

四、 Spring........................................................................................................................................................... 12

1. spring概述......................................................................................................................................... 12

(1) 海纳百川:作为资源的整合、管理软件中的对象...................................................... 12

2. Spring架构图介绍............................................................................................................................ 12

3. 主要jar组成...................................................................................................................................... 15

4. Spring使用......................................................................................................................................... 16

(1) IOC通过spring容器创建对象........................................................................................ 16

(2) DI通过注入依赖为属性赋值............................................................................................. 17

a. 构造注入:构造方法中的属性参数赋值............................................................................ 17

b. Setter注入:方法中的属性参数赋值............................................................................... 17

5. Spring基础主要是IOD/DI.............................................................................................................. 17

6. 为什么要使用Spring........................................................................................................................ 19

7. 什么是事务?...................................................................................................................................... 20

8. 编程式事务和声明式事务的区别?.............................................................................................. 20

a. 两者的区别:编程式事务侵入性比较强,但处理力度更精细.................................... 20

五、 SSM框架....................................................................................................................................................... 20

1. 对ssm框架的认识............................................................................................................................. 20

 

一、 什么是框架:

1.**定义:可重用的、半完成的应用程序、通过类互相组合而成的**

2.**为什么要开发框架:**

(1)**抽取应用程序通用功能:应用程序大体由两类不同性质的组件组成;**

①**业务逻辑组件:程序要处理的具体业务逻辑(方法)**

②**应用系统服务组件:程序就像控制、事务处理、安全性、输入校验、异常处理**

1)**例如:一个银行系统和一个学生管理系统,他们处理业务方面大不相同,不可得到重复利用,而应用系统服务组件在不同的系统中可以得到很好的重,从而被做成一个半成品程序**

(2)**统一J2EE架构和技术:所以规范J2EE技术来实现自己的架构,可以规范B/S页面规范、Java编码规范、日志规范,一旦统一编码规范就可以提高程序的可读性。J2EE技术多样如果不统一,会造成三不利:**

1)**不利后续维护和管理**

2)**不利开发人员的沟通交流**

3)**不利应用程序的维护和管理**

a.**J2EE:分布式的服务器应用程序设计环境,拥有很对技术集合体,如:HTML、JSP、JDBC、XML、WebService,一个java环境,它提供了:1、程序应用的一个运行基础框架环境;2、一套用来创建应用的javaAPI,所有J2EE是以Java为规范的一门技术**

 

 

 

二、**SpringMVC**

1.**SpringMVC概述**

(1)**概述:是一个基于mvc的web框架,是spring框架的一个模块,所以Spring和SpringMVC无需通过中间整合层进行整合,如下图:**

微信图片_20190529131511

(2)**SpringMVC设计模式**

①**控制程序流转的控制器(controller)**

②**封装数据处理的数据模型(Model)**

③**负责展示数据的视图(view)**

符合MVC设计思想的软件应该保证上面三部分相互独立、互不干扰,每一个部分只负责自己擅长的部分

2.**Sping MVC工作原理**

img

a.**向服务器发送Http request请求,请求被前端控制器(DispatcherServlet)捕获**

b.**前端控制器根据xml文件中的配置(或者注解)对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用处理器映射器(HandlerMapping)获得处理该请求的Handler以及Handler对应的拦截器,最后以 HandlerExecutionChain 对象的形式返回。**

c.**前端控制器根据获得的Handler,选择一个合适的处理器适配器(HandlerAdapter)去执行该Handler。**

d.**处理器适配器提取request中的模型数据,填充Handler入参,执行处理器(Handler)(也称之为Controller)(Controller--> service --> Dao -->** 数据库).

e.**Handler(Controller)执行完成后,向处理器适配器返回一个ModelAndView对象,处理器适配器再向前端控制器返回该ModelAndView对象(ModelAndView只是一个逻辑视图)。**

f.**根据返回的ModelAndView,前端控制器请求一个适合的视图解析器(ViewResolver)(必须是已经注册到Spring容器中的ViewResolver)去进行视图解析,然后视图解析器向前端控制器返回一个真正的视图View(jsp)。**

g.**前端控制器通过Model解析出ModelAndView中的参数进行解析,最终展现出完整的View并通过Http response返回给客户端。**

a)**提醒:需要程序员开发的是要程序员做一下配置就可以。**

i.**前端控制器DispatcherServlet(不需要程序员开发)**

作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度

ii.**处理器映射器HandlerMapping(不需要程序员开发)**

作用:根据请求的url查找Handler

iii.**处理器适配器HandlerAdaper(不需要程序员开发)**

作用:按照特定规则(HandlerAdaper要求的规则)去执行Handler

iv.**处理器Handler(需要程序员自己开发)**

v.**视图解析器ViewResolver(不需要程序员开发)**

作用:进行试图解析,根据逻辑试图名解析成真正的视图(view)

vi.**试图View(需要程序员开发的jsp)**

View**是一个接口,实现类支持不同的View类型(jsp\pdf)**

3.**SpringMVC的应用**

(1)**在pom.xml中引入SpringMVC所需的jar包**

(2)**在web.xml中配置SpringMvc,主要配置:**

img

1)**(servlet)SpringMVC前端控制器**

2)**(servlet)配置SpringMVC的核心配置文件位置,默认在WEB-INF,默认名字为springmvc-servlet.xml**

3)**(servlet-mapping)配置拦截所有请求(除jsp外),所有请求都要经过前端控制器**

(3)**在main/resource中创建springmvc-config.xml文件,主要配置:**

img

1)**配置前端放行静态资源html/js/css等,否则静态资源无法访问**

2)**配置注解驱动,用于识别注解**

3)**配置需要扫描的包,如果扫描到的类上有@Controller的类会去自动注册Bean对象**

4)**配置内部资源视图解析器**

(4)**在main/java中创建测试类,方法名要与注释一样,返回值有三种:**

1)**返回pags中的文件,直接返回pags中的视图**

2)**转发:地址不变,返回另一个页面**

3)**重定向:获取另一个资源,地址发生改变**

4.**SringMVC中的web.xml和springmvc-config.xml一些不知道的**

(1)**War工程为什么要有web.xml:**

该servelt会在服务启动的时候立即加载,并且在加载时需要一个springMVC配置文件,默认情况下,会去应用程序文件夹的web-info下找[servlet-name].xml文件,也可以把springMVC配置文件放到程序文件夹的任何地方,用init-param描述,contextConfigLocation描述的就是配置文件所在位置,这样DispatcherServlet会去加载springmvc-config.xml文件,并根据该文件信息创建一个WebApplicationContext容器对象,也成为上下文环境。这个对象继承与ApplicationContext容器,他的初始化与BeanFactory、ApplicationContext有所区别,因为WebApplicationcontext需要ServletContext实例,也就是说他必须在拥有Web容器的前提下才能完成启动SpringWeb应用上下文的工作。有了WebApplicationcontext,就可以使用spring的IOC和AOP等其他功能了。

DispatcherSerlet**是前端控制器,核心功能是分发请求,分发给对应的java类,在springMVC中称为Handle**

spring2.5**之前控制器唯一的方法就是实现org.springframework.web.servlet.mvc.Controller接口,并且只能只处理单一动作的单一请求spring2.5之后控制器可以支持注解的方式,并且无需实现任何接口,可以支持同时处理多个请求.**

基于实现Controller接口的控制器的web应用,配置springmvc-config.xml。基于注解的控制器的web应用,配置springmvc-config.xml。视图解析器如果配置前缀和后缀,调用视图时会自动拼接前缀和后缀

 

三、**Mybatis**

1.**Mybatis框架**

img

 

1)**Mybati框架介绍**

a.**sqlMapConfig.xml的配置,该配置时Mybatis的核心配置,通过配置可以生成SqlSessionFactory对象,也就是SqlSession的工程**

b.**基于SqlSessionFactory可以生成SqlSession(会话)对象,类似于JDBC的Connection,用于连接数据库**

c.**Executor是SqlSession的底层对象,用于执行SQl语句**

d.**MapperStatment对象是sqlSession底层,用于接受输入映射(SQl语句参数),以及输出映射(SQL查询/修改的结果映射成相应结果)**

img

2)**Mybatis框架使用**

a.**创建SqlMapConfig.xml配置文件,规定在src即源码根下创建文件**

b.**创建pojo(简单的java对象)包,实际就是普通的javaBean(java容器),也叫实体类,用于封装数据库获取的一系列信息,例如Emp,封装表Emp中的id、name、jod、salary,而属性一般私有的,所以会提供set&get方法**

c.**创建Empmapper.xml,放在pojo包中与Emp实体类一起,用于映射是同类Emp**

a)**提醒:**

SqlMapConfig**。Xml属于全局配置文件,里面有执行mybatis的环境、管理事务、连接池、连接数据库、引入Mapper.xml等配置;**

Mapper.xml**编写sql语句,里面配置该文件的名字namespce,程序执行会根据名字找到该文件;id值,用于程序找到文件后执行哪个id的语句,所以要求值不重复**

b)**其中有where元素、set元素、foreach元素**

c)**两种执行程序方法:**

i.**自己编写映射文件的位置**

img

ii.**通过接口的映射让程序返回映射文件的位置(接口名要与Mapper.xml中的namespace一样),如下Mapper.xml**

img

img

执行类

img

 

iii.

 

 

2.**Mybatis的优缺点**

①**优点:SQL写在XML中,便于统一管理的优化,提供映射标签,支持对象和数据库的orm字段关系映射,可以对SQL进行优化**

②**SQL工作量大,mybatis的移植性不好,不支持级联**

四、**Spring**

1.**spring概述**

(1)**海纳百川:作为资源的整合、管理软件中的对象**

2.**Spring架构图介绍**

Spring(SSM框架学习.assets/clip_image022-1590133962378.jpg)  什么是Spring - jiaxiaoyuan1204 - 武陵源的传奇

 模块说明
1. 核心容器Spring Core 核心容器,提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2. Spring Context Spring**上下文,是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。**
3. Spring AOP 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。可以很容易地使 Spring框架管理的任何对象支持AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,就可以将声明性事务管理集成到应用程序中。
4. Spring DAO JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
5. Spring ORM Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
6. Spring Web Web**上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。**
7. Spring MVC**框架** MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现**。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。**

Spring 框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

3.**主要jar组成**

 模块说明
1. org.springframework.core 核心工具包,其他包依赖此包
2. org.springframework.beans 核心,包括:配置文件,创建和管理bean等
3. org.springframework.aop 面向切面编程,提供AOP的实现
4. org.springframework.context 提供IoC功能上的扩展服务,此外还提供许多企业级服务的支持,邮件、任务调度、JNDI定位、EJB集成、远程访问、缓存以及多种视图层框架的支持
5. org.springframework.web.mvc 包含SpringMVC应用开发时所需的核心类
6. org.springframework.transaction 为JDBC、Hibernate、JDO、JPA提供一致的声明式和编程式事务管理
7. org.springframework.web 包含Web应用开发时所需支持类
8. org.springframework.aspects 提供对AspectJ框架的支持
9. org.springframework.test 对junit等测试框架的简单封装
10. org.springframework.asm 3.0后提供自己独立的,反编译
11. org.springframework.context.support Context的扩展支持,用于mvc方面
12. org.springframework.expression Spring表达式语言
13. org.springframework.instument 对服务器的代理接口
14. org.springframework.jdbc 对jdbc的简单封装
15. org.springframework.jms 为简化jms api的使用而做的简单封装
16. org.springframework.orm 整合第三方orm,如hibernate/mybatis
17. org.springframework.web.servlet 增强servlet

 

4.**Spring使用**

(1)**IOC通过spring容器创建对象**

a.**在Maven中的pom.xml:配置spring相关依赖包**

b.**在main/resource源目录:创建applicationContext.xml**

i)**文件内容主要有:声明bean对象,标志id,类目录bean对象的全路径**

img

b)**在main/java中:创建测试类**

i.**加载spring核心文件applicationContext,**

ii.**从spring容器中获取bean对象**

img

(2)**DI通过注入依赖为属性赋值**

a.**构造注入:构造方法中的属性参数赋值**

b.**Setter注入:方法中的属性参数赋值**

5.**Spring基础主要是IOD/DI**

(1)**IOC(Inversion of Controller):它是把传统程序代码直接操控对象的调用全交给容器(Bean),通过容器来实现对象组件的装配和管理,所谓控制反转就是对组件对象权的转移,从程序代码转移到容器中**

传统方式创建一个老师,并输出传统和传统的改进对输出都一样没有变化,只不过接口可以有很多人的共性
传统改进 创建一个接口人,老师的类可以实现接口,学生的类也可以实现接口  
spring**方式** a. 先在类包里创建一个spring的配置文件spring-crg.xml,内容略······ b. 需要把一些bean设定到spring的配置文件中,例如把老师的类的这个bean设定进取,然后配置文件内容,列出主要部分<bean id="thePerson" class="com.liumiao.demo.spring.Teacher"> </bean> 使用spring来设定人物对象是老师还是学生都很方便,且编写代码很少

img

(2)**DI(Dependency Injection):DI称为注入依赖,传统中需要自己new对象,调用者和被调用这耦合度高,这样不利于软件的移植和维护。在spring中通过IOC容器中会动态的向某个对象提供它所需的其它对象,不想以前new出来,脱俗点通过容器就是给属性赋值。注入有:构造注入、setter注入、值注入、propertier方式值注入、注解注入、java配置注入**

①**构造注入:在一个类构造方法中有一个属性需要需要赋值,我们可以通过spring的依赖注入,通俗就是给构造方法传参数,优点强制你注入;缺点:构造参数多看起来不好看**

 

img

②**setter注入:给类中的方法传参数,可能会有空值的注入,使用时可以给默认值**

img

③**值注入:通过set方法给属性赋值,其中controller也可以值注入,而且有三种索引方法赋值**

a.**根据下标索引**


b.**根据属性名索引 张三**

c.**根据属性类型索引**

 

img

6.**为什么要使用Spring**

①**方便、解耦**

②**spring能够很好的和各大框架整合**

③**Spring通过IOC容器管理了对象的创建和销毁 工厂模式(设计模式 )**

④**声明式事务的支持:在使用hiberna、mybatis的时候,不用每次都编写提交事务的代码,可以用spring的AOP来管理事务**

⑤**本质是管理软件中的对象,即创建对象和维护对象之间的关系**

 

7.**什么是事务?**

(1)**定义:事务由一种机制,可以将一系列数据库更改归入一个逻辑单元,所以事务具有(ACID)原子性、一致性、隔离性、持久性这几种属性**

(2)**什么是分布式事务?**

8.**编程式事务和声明式事务的区别?**

(1)**编辑式事务:需要在代码中直接加入处理事务的逻辑,在代码中显示调用commit()、rollback、等事务相关方法,需要自己开启事务和关闭事务**

(2)**声明式事务:在方法外围添加注解或直接在配置文件中定义,方法需要事务处理的时候,spring会在方法前后拦截并添加事务**

a.**两者的区别:编程式事务侵入性比较强,但处理力度更精细**

五、**SSM框架**

1.**对ssm框架的认识**

(1)**整个系统分为表现层、controller层,service层,DAO层四层,springMVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久话引擎(1)整个系统分为表现层、controller层,service层,DAO层四层,springMVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久话引擎**

posted @ 2020-05-22 15:54  李佳聪  阅读(395)  评论(0)    收藏  举报