MVC 模式是一种目前广泛流行的软件设计模式,随着 J2EE 的成熟,它正成为 J2EE 平台上推荐的一种设计模型,将业务处理与显示分离,将应用分为模型、视图及控制层,增加了应用的可扩展性。MVC 模式为搭建具有可伸缩性、灵活性、易维护性的 Web 系统提供了良好的机制。

Struts 框架

Struts 把 Servlet、 JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员利用其进行开发时不用自己再编码实现全套 MVC 模式,极大地节省了时间 。

Struts 的工作流程为:首先, JSPview 发起一个以.do 表示的请求; ActionForm 封装用户请求数据,同时提供验证数据的功能; ActionServlet 根据 struts-config.xml 文件来得到处理这个请求的 Action 对象,并将请求发送给这个 Action 对象; Action 对象调用 model 去处理这个请求,将结果返回给 ActionServlet; ActionServlet 决定将结果返回给对应的 view;view 得到结果,并将它显示给用户。这里需要提到的是,可以通过 Struts 提供的 ActionForm封装 web form 中的元素,使重用 web 表单成为可能。

Spring 框架

Spring 核心本身是个容器,管理物件的生命周期、物件的组态、相依注入等,并可以控制物件在创建时是以原型(Pro-totype)或单例子(Singleton)的方式来创立。 Spring 的核心概念是控制反转(Inversionof Control, IoC),更具体而易懂的名词是依赖注入(Depen-dency Injection),使用 Spring,不必自己在程序码中维护物件的依赖关系,只需在构件中加以设定, Spring 核心容器会自动根据构件将依赖注入指定的物件。 Spring 的目标是实现一个全方位的整合框架,在 Spring 框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其他的框架方案加以替代, Spring 成为企业级应用程序一站式的解决方案。其架构如图 15-9 所示。

重量级的开发倒并不是指 EJB 或者是 JNDI,很大意义上,重量级的开发都是需要依赖一个非常庞大的容器系统进行开发,在 EJB 的开发中,所有开发的内容基本都需要放置在一个容器系统中进行运行这些容器因为基本针对大型企业应用, 所以体积庞大,占用资源过多,在开发的过程中效率很低。因为使用大型容器作为开发环境的话,很大一部分时间都用在了配置、运行这样的过程上,有时候改动一个小小的部分,需要等很长的时间才能看到结果。如果做单元测试也比较麻烦,虽然现在有很多针对容器的单元测试框架,但是还是没有很好地解决配置的等待问题,所以在开发者这里, EJB 逐渐失去了吸引力,因为感觉实在是太笨重了。 轻量级框架的优势很大程度上是因为加速了开发的速度,不用部署一个很庞大的容器系统就可以实现以前需要容器才能实现的功能,可以使用 Spring 代替 EJB 中的无状态的会话Bean,可以使用 Hibernate 代替 EJB 中的实体 Bean,而且可以直接写一个应用程序运行已经完成的系统,马上可以看到结果,做单元测试非常简单,不需要做太多的工作就可以构建系统,这些特性对于开发人员来说非常有吸引力。

轻量级架构和重量级架构相关推荐

  1. 轻量级锁_Java高级架构师-Java锁的升级策略 偏向锁 轻量级锁 重量级锁

    欢迎关注头条号:Java小野猫 这三种锁是指锁的状态,并且是专门针对Synchronized关键字.JDK 1.6 为了减少"重量级锁"的性能消耗,引入了"偏向锁&quo ...

  2. 轻量级虚拟桌面基础架构(VDI) 解决方案降低 IT 成本并保护知识产权

    轻量级虚拟桌面基础架构(VDI) 解决方案降低 IT 成本并保护知识产权 通过从任何地方和任何设备进行安全快速访问,为混合云环境启用远程工作. ETX突出优势 1.交付具有成本效益且可扩展的 VDI ...

  3. 使用轻量级虚拟桌面基础架构 (VDI) 解决方案降低 IT 成本并保护数字知识产权

    使用轻量级虚拟桌面基础架构 (VDI) 解决方案降低 IT 成本并保护数字知识产权 通过从任何位置和任何设备进行安全快速的访问,实现混合云环境的远程工作. 突出亮点: 1.提供经济高效且可扩展的 VD ...

  4. 轻量级Transformer模型ConvBERT架构及完整源码实现

    第28章:使用Local dependency轻量级Transformer模型ConvBERT架构内幕及完整源码实现 1,BERT依赖global self-attention而带来的问题分析 2,B ...

  5. 【计算机科学】mini-AORCNN:一种基于Bottleneck Transformer的轻量级微表情识别架构——CCF T2

    mini-AORCNN:一种基于Bottleneck Transformer的轻量级微表情识别架构 摘要 微表情是一种能够体现人真实情感的自发面部动作,其持续时间较短,动作幅度轻微,识别难度较大,但是 ...

  6. 软件架构万字漫谈:业务架构、应用架构与云基础架构

    软件架构万字漫谈:业务架构.应用架构与云基础架构 本部分节选自<软件架构设计> 软件开发就是把一个复杂的问题分解为一系列简单的问题,再把一系列简单的解决方案组合成一个复杂的解决方案.而软件 ...

  7. 架构漫谈:业务架构、应用架构与基础架构

    软件开发就是把一个复杂的问题分解为一系列简单的问题,再把一系列简单的解决方案组合成一个复杂的解决方案.而软件开发中最大的挑战,就是即能够快速高效地针对需求.环境的变化做出改变,也能够持续提供稳定.高可 ...

  8. 偏向锁、轻量级锁、重量级锁,Synchronized底层源码终极解析!

    synchronized是掌握Java高并发的关键知识点,底层源码更是面试重灾区.本文从源码学习synchronized的原理,讲解对象头.偏向锁.轻量级锁.重量级锁等概念. 扫码关注<Java ...

  9. 【服务化架构】SOA和微服务架构、灵活架构

    文章目录 一.SOA ESB 二.微服务 微服务和Docker 三.关于 SOA和微服务关系 的几种观点 四.QA 关于ESB的单点故障 关于微服务的去中心化 和 API网关 五.灵活架构 导读 SO ...

  10. 微服务架构 vs SOA架构

    微服务架构 vs. SOA架构 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. 一.面向服务的架构SOA 面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其 ...

最新文章

  1. C语言编程的Debug版和Release版
  2. Jquery validate验证表单时多个name相同的元素只验证第一个的问题
  3. .NET Core中的验证组件FluentValidation的实战分享
  4. 【MATLAB、深度学习】AlexNet及VGG神经网络在MATLAB上的应用
  5. python回溯方法的模板_实例讲解Python基于回溯法子集树模板实现图的遍历功能
  6. 在EditPlus里直接运行PHP
  7. Python 面向对象(OOP)基本概念
  8. 软件技术方案模板_携手跨越,法本信息数字化解决方案赋能企业,共建数字未来...
  9. 货币代码php,PHP货币换算程序代码_PHP教程
  10. yolov5的head修改为decouple head
  11. wordpress初体验
  12. 券商Robinhood大量客户被最低价格强平-交易成本拉大500倍,游戏驿站GME只能平仓不能开仓-看看行政总裁Vlad Tenev是如何回复这些问题的?
  13. 怎样提取PDF文件其中一页
  14. class与typename的异同
  15. 深度学习中的深度前馈网络简介
  16. 第十二届蓝桥杯电子类嵌入式设计与开发省、国赛经验分享
  17. MySQL高级之外键、表关联、数据导入及导出
  18. iOS vs Android 系统架构
  19. 搜索功能java代码_简单的搜索框代码实现
  20. Metaverse启动机之重构现世,AI创造营创意赛开启

热门文章

  1. iOS 去除字符串中的H5标签
  2. linux7输入法切换,centos7如何切换输入法
  3. MISFIT SHINE2评测相比一代的SHINE更加实用:也许是目前最好的智能手环
  4. 上传文件到服务器速度慢怎么解决,网络上传速度慢怎么办(解读其上传速度慢原由)...
  5. UDP数据丢包跟踪与总结
  6. 计算机应用安装不了软件总被隔离,电脑安装软件时显示此程序被组策略阻止的解决方法...
  7. 计算机科学理论数学研讨会,2017年奇异摄动理论及其应用学术研讨会会议-上海交通大学数学系.DOC...
  8. 树莓派 | RSSHub+TTRSS
  9. SceneFlow Dataset
  10. webrtc QOS方法一(NACK实现)