1.背景介绍
SSM框架是什么
SSM框架,是Spring + Spring MVC + MyBatis的缩写,目前主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。使用ssm框架的好处是在于其易复用和简化开发,掌握了每个框架的核心思想。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
mybatis是对jdbc的封装,MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(普通的 Java对象)映射成数据库中的记录。
2.知识剖析
SpringMVC:
1.客户端发送请求到DispacherServlet(分发器)
2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
3.Controller调用业务逻辑处理后,返回ModelAndView
4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
5.视图负责将结果显示到客户端
Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
使用流程:
- 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
- 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
- 写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。
- 写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。
- 写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
- 写JSP页面调用,请求哪些参数,需要获取什么数据。
DataBase ===> Entity ===> Mapper.xml ===> Mapper.Java ===> Service.java ===> Controller.java ===> Jsp.
3.常见问题
1.put,delete方法怎么转换成get,post方法。
只需要在web.xml中配置下面的内容就可以了:
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.各种报错问题.
配置文件的位置需要定位好,在resource中POM设置. 细节问题.比如action的名字,post和get方法用错. 学会查看使用日志.
4.编码实战
5.扩展思考
SSM框架的优势:
从三个方面分析:
1.Spring的优势:
通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,方便解耦,简化了开发
2.Spring MVC的优势:
SpringMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,使我们开发更简洁
与Spring无缝衔接
灵活的数据验证,格式化,数据绑定机制
3.Mybatis的优势:
数据库的操作(sql)采用xml文件配置,解除了sql和代码的耦合
提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建
提供了xml标签,支持动态的sql
6. 参考文献
https://blog.csdn.net/lsj741223/article/details/80805110
https://blog.csdn.net/bieleyang/article/details/77862042
https://www.jianshu.com/p/bdee08936647
https://www.cnblogs.com/zyw-205520/p/4771253.html
7.更多讨论
spring容器和springmvc容器的关系:
Spring属于父容器,在进行注解扫描时主要对service层、dao层的bean进行扫描和管理,而springmvc主要是对controller层的bean进行扫描和管理的。
return什么类型?
ssm涉及到幂等性了么?
严格意义上ssm只是一种框架的思想,它并不会涉及到幂等性,但我们学习ssm,使用rest风格向服务器发起请求,此时我们就涉及到了幂等性,那么在这时候幂等性就比较重要了,因为它会涉及到资源的携带,请求重复性提交,session的保存等的问题。