当前位置: 首页 > 后端技术 > Java

java开发SSM开发框架

时间:2023-04-01 23:43:38 Java

1.什么是SSM开发框架?了解什么是SSM开发框架?你需要先搞清楚开发框架的概念。开发框架是一套规则和编写良好的框架代码,帮助我们实现了很多基本功能,为程序员节省了大量的编码工作,让程序员更专注于系统业务逻辑处理的优越性。例如,Spring框架可以简化Java程序对数据库的访问。使用Spring框架访问数据库,提高了数据库的访问效率和健壮性。程序员不需要编写大量访问数据库的基本代码。他们只需要编写访问数据库的SQL语句。就是这样。开发框架还可以提高程序的标准化程度和代码的复用性。比如SpringMVC开发了一种适合Web应用的设计模式,这种设计模式就是MVC。M为Model(中文名称为数据模型),一般为实体类,可被多个视图共享;V是View(中文名是view),可以是JSP、ASP等动态页面;C为Controller(中文名称为控制设备),用于接收视图发起的请求或将处理后的内容返回给视图。想要使用MVC开发Web应用程序的程序员必须遵守MVC规定的设计模式。下图展示了SpringMVC的视图、模型、控制器交互过程。上图中的视图是JSP页面。JSP页面将请求发送到Controll类,它是MVC控制器。Controll类收到视图的请求后,分发请求并调用相关业务类处理请求;POJO类(实体类,即MVC的数据模型)是业务类要处理的数据对象,处理后的数据对象可以通过控制器返回给视图。开发框架还可以提高程序的可扩展性和可维护性。比如我们写的web应用一般需要支持数据库的开发,在web应用中编写数据库的SQL访问代码,支持MySQL数据库。当客户提出支持Oracle数据库时,我们需要重写访问数据库的所有代码。这显然不是我们想要的结果。也可以说这个Web应用的扩展性和可维护性很差。如果在web应用中使用Mybatis数据库开发框架,就可以避免这种情况。只需使用该工具自动生成Mybatis数据库访问类文件和映射文件即可。当然,在实际编程中,可能并没有这么简单方便。如果扩展Mybatis映射文件和数据库访问类文件,可能需要自己编写或修改这部分扩展的SQL语句。现在我们知道什么是开发框架,也知道使用开发框架可以减少程序员的编码工作量,大大提高程序的标准化、可扩展性和可维护性,间接提高程序的质量。接下来说说什么是SSM。SSM是三个开发框架的集成。第一个字母S指的是Spring开发框架,第二个字母S指的是SpringMVC开发框架,第三个字母M指的是Mybatis数据库开发框架。其实SpringMVC是Spring框架的扩展,是Spring框架的一部分,所以应该是两个开发框架的整合。SSM现在已经成为主流的web应用开发框架,网络项目也会使用SSM开发框架来搭建系统。2.SpringFramework说起Spring框架,就不得不说说J2EE的EJB。年长的Java程序员对J2EEEJB仍然记忆犹新。那时候很流行用EJB开发大型应用系统。Java程序员都以掌握了EJB开发技术为荣。程序员之所以自豪,是因为EJB技术如此复杂,普通的Java程序员很难掌握如此复杂的技术。EJB的学习成本很高,但是开发效率不高,需要写很多重复的代码。这些问题阻碍了EJB的继续发展。就在EJB技术停滞不前的时候,Spring框架应运而生。Spring框架不同于EJB。Spring框架的学习成本很低。它是一个轻量级的开发框架,更强调面向对象的设计,不是让现有的技术变得更复杂,而是使用JavaBean代替复杂的EJB,并为JavaBean提供了一个易于使用的应用程序配置框架。一个JavaBean是一个公共类,可以被其他JavaBean类作为一个组件使用,JavaBean之间的组合不需要在代码层面实现,可以在配置层和注解层实现,Spring会自动选择合适的。JavaBean来组装和运行。这种自动适配机制避免了JavaBean与使用类之间的代码耦合,提高了程序的可扩展性和可维护性。比如A类需要使用B类,B类是A类的一个属性,如果直接在A类中创建B类,当B类因业务需要需要修改时,A类的代码也需要待修改。这种写法就是代码耦合。也可以说A类和B类属于代码耦合。如果我们把B类的创建交给Spring,Spring通过配置文件或者Java注解来创建B类,然后Spring将创建的B类的实例和A类的实例结合起来,这样就避免了A类和类的代码B耦合。这种机制是Spring框架控制思想的倒置,相当于A类把B类的创建权交给了Spring,Spring控制了B类的创建。Spring框架的另一个重要功能是AOP机制。Spring框架的AOP机制可以将系统中的一些通用功能提取出来,作为JavaBean使用。同时在系统的业务流程代码中设置调用这些JavaBean函数的入口点。当系统业务流程执行到入口点时,Spring会自动将需要水平调用的JavaBean切割到业务流程指定的位置。AOP的这种技术也叫“横切”技术。例如,在业务系统中,当用户要进入需要操作权限的页面时,系统会先进入登录页面,要求用户在进入该页面前先登录系统。这样的操作权限页面会有多个。如果每个页面都写登录业务逻辑处理代码,显然会造成代码冗余,维护起来也很麻烦。更好的做法是将用户登录业务处理作为一个独立的JavaBean,也称为AOP的“切面”。然后在需要用户操作权限的业务流程页面设置“入口点”,通过注解或配置文件将“切面”和“入口点”连接起来。当业务流程执行到“入口点”时,Spring框架会自动将与入口点关联的“切面”切割到业务流程“入口点”所在的位置,并开始执行“切面”代码,直到切面代码执行完毕,再根据“切面”返回的结果判断是否执行后面的流程。下图是用户登录功能切入业务流程的示意图。Spring框架的另一个最大特点是不与现有的开发框架竞争,而是以融合的方式集成其他框架,充分利用其他框架的技术,为系统实现提供最优的解决方案。SSM是结合了MVC框架技术和MyBatis数据库框架技术的Spring框架。SpringMVC是Spring框架的一部分。在Spring框架成为JavaEE开发的主流框架后,Spring开发团队在Spring框架的基础上推出了MVC框架,主要用于支持WEB应用的开发。MVC是三个英文单词Model(模型,又称数据模型)、View(视图)、Controll(控制器)的首字母缩写。从MVC组合的三个词也可以看出,MVC是一种使用控制器将数据模型与视图分离的设计模型,即视图与数据解耦。这样做的好处是后端处理的数据模型与前端视图显示的数据格式无关。实现一个数据模型可以对应多个视图以不同的方式展示数据。当数据模型或视图发生变化时,相互影响也会降到最低。MVC中最重要的核心是控制器。控制器相对独立于视图和模型。起到分发请求和返回处理结果的作用。请求和数据模型的处理一般由JavaBean来处理。虽然MVC需要程序员写一些额外的代码,但是它强制要求分离视图和数据给我们带来的好处是毋庸置疑的。可以想象,在早期的JSP网页中,处理数据的代码和HTML显示的代码是混合在一起的。完全耦合在一个文件里,程序逻辑也很混乱。大问题。MVC开发架构见第4章:设计系统逻辑架构、开发架构、物理架构编码工作量等方面。图为将Mybatis技术架构集成到Spring框架中。架构图分为两部分:虚线框外是Spring框架的业务逻辑处理类,调用Mybatis的DAO接口发起对数据库的增删改查请求;虚线框内是Mybatis框架,包括DAO接口、DAO接口实现类Mapper、POJO实体类、SQL执行Executor类、SqlSession类。一个用户登录业务访问数据库的流程如下:用户通过JSP填写登录账号和密码后,JSP会向指定的Controller类发送登录请求。Controller类收到请求后,会调用登录服务类(Service类),登录服务类调用DAO类的登录接口,因为这个接口是Mapper类实现的,所以登录SQL代码Mapper类会被执行,而Executor类真正执行的是SQL代码,它创建了一个SqlSession对象,SqlSession对象访问数据库的用户表,并将访问结果返回给Mapper,Mapper类返回数据根据接口的返回类型到登录业务类。DAO接口声明访问数据库的具体操作方法,提供数据库的增删改查方法,不对外暴露数据库访问细节。不负责增删改查方法的具体实现,方法的具体实现由Mapper负责。这样做的好处是当数据库访问细节发生变化时,不会影响业务逻辑类的变化。例如,当数据库访问细节发生变化时,只需要修改Mapper代码,而Mapper代码是一个XML文件,不需要重新编译整个系统。如果将实现细节放在DAO类中,则需要修改DAO类的代码。修改DAO类的代码,显然会影响到Service类的代码。即使没有影响,也需要重新编译整个系统。DAO接口由MyBaits自动生成,无需手动编写DAO接口代码。Mapper是DAO的实现类。Mapper不是一个Java类,而是一个XML文件。访问数据库的SQL语句都是在Mapper中实现的。这些Mapper代码不需要你手动编写,完全由MyBaits自动生成。POJO是实体类,主要是需要数据传递和序列化的类。例如一个Java类对应一个数据库表。POJO类不需要手动编码,POJO类完全由MyBaits自动生成。Exectuor类是执行SQL语句的类。所有MapperSQL语句都是通过Exectuor类执行的。Exectuor类会创建一个SqlSession来完成对数据库的操作。Mybatis只是简单的反映了开发者建好数据库后,可以利用Mybatis自身提供的插件自动生成上图中虚线框内的DAO接口类、Mapper实现类、POJO实体类的代码。开发人员不需要手动编写这些代码。这些代码只有在有特殊SQL查询需求的情况下才会被扩展。下图是Mybatis代码自动生成的示意图。Mybatis代码自动生成插件需要从配置文件中读取数据库的访问地址、登录账号和密码,还需要从配置文件中读取数据库的哪些表需要生成POJO类、DAO接口类和Mapper的实现类,以及这些类存放在哪里。原作者:郎洪林