浅析JavaWeb框架技术十年深思

所谓的Java框架,简单理解是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。Struts、Hibernate和Spring是Java开发中的常用框架,他们分别针对不同的应用场景给出最合适的解决方案。

二、JavaWeb框架技术发展过程

传统的JavaWeb应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean。但是这种结构仍然存在问题:如JSP页面中需要使用符号嵌入很多的Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。

为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个Servlet),针对不同的业务,需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。从此JSP页面中不需要出现一行包围的Java代码了。

可是所有的运算逻辑都放在Struts的Action里将使得Action类复用度低和逻辑混乱,所以通常人们会把整个Web应用程序分为三层,Struts负责显示层,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。

使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。

现在我们有三个层了,可是每层之间的调用是怎样的呢比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调用持久层的类,也需要new一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现。简单的说,就是调用者依赖被调用者,它们之间形成了强耦合,如果我想在其他地方复用某个类,则这个类依赖的其他类也需要包含。程序就变得很混乱,每个类互相依赖互相调用,复用度极低。如果一个类做了修改,则依赖它的很多类都会受到牵连。为此,出现Spring框架。Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以Spring框架最核心的就是所谓的依赖注射和控制反转。

现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,这个结构是目前国内最流行的JavaWeb应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做SpringMVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。

三、当前流行的框架技术及发展趋势

除了上述中的Struts、Hibernate和Spring外,比较流行的就是SpringMVC框架。SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说spring是最好的,它的实现是教科书式的,它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比struts所具有的优势。而且框架本身有代码,看起来容易理解。

springboot框架,被称作一栈式解决方案。比较轻量,也是当前微服务下的趋势;springboot本身就是构建与spring之上,各种思想和特性无需多说,去掉了spring繁琐的配置,简化了原有spring开发的流程,提供了各种实用的特性如metric,actuctor等等;最重要的是springboot附带了整个springcloud生态。两个框架对你解决大,中,小项目都没任何问题。

play更加偏向于scala,本身轻量性能高,随着逐步的优化易用性以及扩展性都变得越来越好。

JFinal是基于Java语言的极速web开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。

THE END
1.流行的Web应用开发框架web开发框架Spring框架由多个模块组成,如Spring Core(核心容器)、Spring MVC(用于构建Web应用的MVC框架)、Spring Boot(简化Spring应用的开发和部署)、Spring Cloud(用于构建微服务架构)等。这种模块化的设计使得开发者可以根据项目需求选择使用不同的模块。例如,在开发一个企业级Web应用时,可以使用Spring MVC来构建Web层,Spring https://blog.csdn.net/weixin_62879005/article/details/142549602
2.Web快速开发框架(精选八篇)在早期WEB开发中, 网页的数据嵌入在页面中, 无论页面打开多少次, 页面内容也不会发生变化, 这种页面称为静态网页。而MVC框架中View视图中的数据来源于数据库, 随着数据库数据的变化, 页面中的数据也会随着发生改变, 称之为动态网页, 现在比较流行的动态网页开发技术由Jsp、Asp和Php。Java的MVC模型就是采用的Jsphttps://www.360wenmi.com/f/cnkey4a7mlx0.html
3.《Web框架技术(Struts2+Hibernate+Spring3)教程(高等学校计算机Web框架技术-教程(第2版)Struts2+Hibernate框架技术教程(第2版)Java程序设计与项目实训教程(第2版)JSP程序设计实训与案例教程Web框架技术-教程Struts2+Hibernate框架技术教程JSP程序设计与项目实训教程Java程序设计与项目实训教程 清华大学出版社有限公司当当自营 http://product.dangdang.com/23257161.html
4.RESTfulWebServicesWeb技术基础:HTTP应用协议、URL命名标准、XML标记语言 Web设计原则(REST):表示性状态转移(Representation State Transfer) ROA:面向资源架构(Resource-Oriented Architecture) RESTful web services:REST式Web服务 HTTP方法(HTTP method):GET 获取、HEAD、PUT 改写、DELETE 删除、POST https://www.jianshu.com/p/271e2902b3fe
5.全景式详解Cosmos技术原理设计框架以及生态全览Web3世界详解 Optimistic Rollups 技术和设计原理。尽管单片链从一定程度上解决了以太坊上的 state boat 问题,比如低交易手续费,以及快速交易等问题,但是却牺牲了安全以及去中心化程度。 区块链已经逐步从单片链演变为模块化区块链,对于这个话题感兴趣的同学,可以看我们之前的文章区块链设计演变之路,详细介绍了不同区块链的https://www.web3sj.com/project/1279/
6.轻量级JavaWeb框架技术选型OSCHINA轻量级 Java Web 框架技术选型 本文是《轻量级 Java Web 框架架构设计》的系列博文。 前面已对该 Java Web 框架做了一些简要描述,目标就是打造一个轻量级的 Java Web 开发框架。我们不考虑使用 Struct、Spring、Hibernate 以及 MVC 模式,我们只是取其精华、去其糟粕,我们不是要重造轮子,而是要改造轮子,努力打造https://my.oschina.net/huangyong/blog/158546
7.14个最佳的HTML/CSS设计和开发框架7)Web框架——Kube Kube框架也是网页设计过程中的重要组成部分。它是一个自适应和响应式的工具,可用于支持网站设计。它有效的功能和可靠的性能有助于我们快速轻松地创建网站。 官方网站:http://imperavi.com/kube/ 8)CSS框架——Columnal columnal框架是一个有效的CSS网格系统,并有少许的自定义代码。这是一个弹性https://www.51html5.com/a76.html
8.WEB前端设计9篇(全文)关键词:Web2.0,web应用前端,开发框架设计,Java Script插件 Web2.0属于一种全新的传播方式, 它不仅是互联网技术的改进, 而且强调公开个人的真实表达和共同建设互联网的开发理念, 其应用过程中的网站数据允许用户随意上传和下载, 信息共享程度高;每个用户在网站系统中都拥有独属于个人的数据, 通过直接的浏览器既可以实现https://www.99xueshu.com/w/ikeymo06qzaw.html
9.常用的Web扩展开发框架组件化开发:Plasmo 采用组件化开发方式,允许开发者将复杂的 Web 应用拆分成一系列独立的、可复用的组件。这种组件化的设计有助于简化开发过程,提高代码的可维护性和可重用性。 支持多种前端框架:Plasmo 框架支持多种主流前端框架,如 React、Svelte 和 Vue,开发者可以根据自己的技术栈和喜好选择适合的框架进行开发,提https://www.51cto.com/article/783359.html
10.Web技术1498新一代基于 Web Components 的跨框架UI组件库 Quark ,输出标准的 Custom Element,组件可以同时在 React、Vue、Preact、Angular 或原生 JS 等任意框架或无框架中使用。 Quark Design 是什么? Quark(夸克) Design 是由哈啰平台 UED 和增长 & 电商前端团队联合打造的一套面向移动端的跨框架 UI 组件库。与业界第三https://cloud.tencent.com/developer/article/2164480