简单介绍几种Java后台开发常用框架组合
01 前言
Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这篇文章胖达就打算给大家介绍几款现阶段流行的框架组合,不管是在传统企业开发还是在互联网开发领域,这几种框架应该都是比较常用的。
02 三层架构
说到框架首先需要明确的是,在Web开发领域一般会将架构分为三个部分:表示层、持久层、业务层,之所以将整体架构分为三个层面,主要目的是让整个系统更具有条理性,通过分配任务的方式进行系统的解耦,让每一层只关心自己内部的事情,只知道下层的存在,不知道上层的存在。达到局部改变而不影响全局的目的,就比如餐馆中有服务员、厨师、收银员一样,各司其职,让系统有条不紊的运行下去。三层架构如下图所示(图中的数据访问层就是文中的持久层):
下面就简单介绍一下三层架构:
1.表示层
表示层其实就是用户能够看到的界面显示层,但是它的职责并不仅仅是显示界面那么简单,而是需要完成三件事情:
从界面中取得数据跟后台服务器交互
跟后台交互后进行数据绑定
将绑定的数据呈现在页面中
一般来说,这一层的设计会采用MVC的模式,M称为模型也就是实体类,用于数据的封装和数据的传输;V为视图也就是页面组件,用于数据的展示;C为控制也就是流程事件,用于流程的控制。
2.业务层
这一层的功能主要是实现一些具体问题的操作,因为它是表示层和持久层之间沟通的桥梁,主要负责数据的传递和处理。
在日常的代码开发中一般对应着逻辑Service层,对于一些复杂的逻辑判断和涉及到数据库的数据验证都需要在这一层做出处理,同时根据传入的值返回用户想得到的值,或者处理相关的操作。
3.持久层
也称为数据访问层,顾名思义,这一层其实就是跟数据库直接打交道的层面,通过连接数据库,根据传入的值对数据库进行增删改查。
03 框架组合
针对上面架构的每一个层面,目前Web开发领域内都有一些优秀的框架,例如表示层有Structs2、SpringMVC等,持久层有Hibernate、Mybatis等,还有业务层有Spring框架,但是严格来说,Spring是一个整合框架,业务层面在每一个公司每一个项目都会根据自己的需求做不同的处理。在项目的开发中,有这样几种使用非常广泛的框架组合:
1.SSH框架组合
SSH框架组合主要包括Struts 、Spring、Hibernate三大框架,用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,同时用Spring来管理Struts和Hibernate,框架具体解释如下:
- Struts框架
Struts框架是一个基于MVC设计模式的Web应用框架,它本质上相当于一个Servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
它包含Struts1和Struts2两个版本,两者的相差其实还是挺大的,Struts2并不是对Struts1的更新,而是充分发挥了Struts1和WebWork这两种技术的优势,它抛弃了原来Struts1的缺点,使得Web开发变得更加容易。
- Spring框架
学习基础的时候大家应该都知道,最传统的Java Web应用程序是采用JSP、Servlet、Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构有负责前台展示的 JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean,但是这种结构存在问题如JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等。
Spring框架的出现就解决了这个问题,通过AOP和IOC两大特性的加持,把所有类之间的这种依赖关系完全通过配置文件的方式替代了,同时将实体bean很好的管理到了容器中,使得耦合性大大降低,复用性大大提高。
- Hibernate框架
传统的持久层框架都是采用Java JDBC的连接方式进行数据库的访问和操作,需要人为的编写大量的SQL或者代码,同时还需要将获得的数据进行转换或封装后往外传,其实对于大项目而言这是一个非常烦琐的过程。
Hibernate框架是一个半自动化的持久层框架,可以减少大量的SQL、代码编写工作,省掉很大部分的工作量,在这个框架中,当我们需要相关操作时,不用再关注数据库表也不用再去一行行的查询数据库,只需要通过持久化一个类的方式就可以完成增删改查的功能,因为框架的内部已经实现了很多对数据库的操作方法,我们只需要调用即可,做的最多的工作都在持久化类上。
2.SSM框架组合
另外一个比较流行的框架组合是SSM框架,主要包括SpringMVC、Spring、Mybatis三大框架,用SpringMVC作为整体基础框架,分离MVC层级,Mybatis作为跟数据库交互的持久层框架,负责数据的访问和操作,而Spring依然作为其余两大框架的桥梁,进行数据的传递和事务等逻辑处理,下面Spring不再赘述,关于SpringMVC、Mybatis详情如下所述:
- SpringMVC框架
SpringMVC和Struts2都属于表现层的框架,但它是Spring框架的一部分,这让SpringMVC有了先天的优势,它延续了Spring在配置上简单省心的特点,而且因为与Spring无缝对接,这让安全性有了很大的保障。同时SpringMVC解决了一个很大的问题就是如何降低处理业务数据的对象和显示业务数据的视图耦合性,这个问题的解决让开发变得更加的简单。
- Mybatis框架
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射, 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的繁杂。它可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java对象映射成数据库中的记录。
Hibernate固然优秀,但是跟Mybatis相比,它的封装太过于死板,对一些复杂的sql,开发人员更喜欢手动的编写一些代码,而不是通过特定的HQL语言去编写,这样会间接的增加工作量,而且Mybatis更好上手,学习成本比Hibernate要低很多,但是有一点不得不承认,Hibernate的开源社区人数要碾压Mybatis的,毕竟国外很多大佬还是喜欢用Hibernate的,后期可以详细探索探索。
04 总结
无论如何,学好框架都对我们有很大的帮助,在这篇文章胖达只是简单介绍了一下框架的三层架构以及两个流行的框架组合,后面的文章中我会分别对一些框架进行详细的介绍,如果有机会,也会将框架整合的过程记录下来跟大家分享,希望大家都能在我的文章中有所收获,也希望自己能够坚持技术分享,跟大家一起成长。
简单介绍几种Java后台开发常用框架组合的更多相关文章
- 【分享】Java后台开发精选知识图谱
地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...
- Java后端开发常用工具
Java后端开发常用工具推荐: 俗话说,工欲善其事,必先利其器.不过初学时候不大建议过度依赖IDE等过多工具,这会让自己的编程基础功变得很差,比如各种语法的不熟悉,各种关键字比如synchronize ...
- Java后台开发精选知识图谱
1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习方 ...
- Java 后端开发常用的 10 种第三方服务
请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员.本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题. 严格意义上 ...
- 携程Java后台开发三面面经
前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...
- 【转】Java十大常用框架介绍(spring系+dubbo+RabbitMQ+Ehcache+redis)
一.SpringMVC Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动 ...
- discuz后台开发常用函数
showsetting()表单显示 返回值:无 参数: $setname - 指定输出标题,如:setting_basic_bbname, 自动匹配描述文字为:setting_basic_bbname ...
- Java基础和常用框架的面试题
前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...
- Android开发常用框架汇总
作为一名程序猿,好的工具会让你在搬运工的道路上越走越远.以下框架是AC在开发过程中经常会使用到的一些好的框架.列在这里做一个小小的总结,包含但不限于此. 响应式编程 RxJava https://gi ...
随机推荐
- 避免单线程单元 (STA) COM 组件
默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行.若要运行它们,必须在 .aspx 文件内将 ASPCompat=true 属性包含在 @ Page 指令中.这样就将执行用的线 ...
- hudson搭建经验总结(三)
作者:朱金灿 来源:http://blog.csdn.net/clever101 在创建hudson账户和分配权限时出错,当单击save按钮时出现 HTTP Status 500 - type Exc ...
- 关于undefind
var undefined = "东方云游"; alert(undefined); // undefined 不一定为undefined ie8(包含ie8)以下会返回 " ...
- 10.24的注意事项——解决linux_jni编译错误的问题
公司以opus开源库.因此,我们遇到了一些问题. 我将新下载的opus1.1替换掉老版本号之后,单独编译opus没问题.但是编译相关的文件就会报错. 错误信息例如以下: g++ -Wall -fPIC ...
- (让你提前知道软件开发33):数据操纵语言(DML)
文章2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包含insert.delete和update语句,用于增.删.改数据. ...
- 多线程——继承Thread类别
详细java此前使用多线程,让我们来看看下面的问题. 什么是多线程 简单的理解成:cpu"同一时候"运行多个任务,这就是多线程. (究其本质,当涉及到进程和线程的概念.上面 ...
- WPF中使用amCharts绘制股票K线图
原文:WPF中使用amCharts绘制股票K线图 本想自己用GDI绘图, 通过数据直接绘制一张蜡柱图, 但觉得这样子的功能比较少, 所以到网上搜索一些能画出K线图的控件. 发现DynamicDataD ...
- WPF 用代码调用dynamic resource动态更改背景 - CSDN博客
原文:WPF 用代码调用dynamic resource动态更改背景 - CSDN博客 一般dynamic resoource通常在XAML里调用,如下范例: <Button Click=&qu ...
- MIPS开发板的“不二”选择——Creator Ci20单板计算机评测(芯片是君正JZ4780 ,也就是MIPS R3000,系统推荐Debian或深度,官网就有,其它语言有FreePascal和Go和Java和Python)
在MIPS架构的CPU上开发软件,当然需要使用MIPS专用的工具链来编译代码.不过一般的LINUX发行版内都有相应的配套工具链供用户使用.Ci20出厂时的LINUX发行版为DEBIAN 7.5,相应的 ...
- Docker笔记01-发布一个dotnetcore应用
OS:Widows 10 IDE: VS2017 Docker:Docker Desktop for Windows Windows下安装Docker需要先启用Hyper-v 在Windows 容器的 ...