我选择用Spring + Struts + Hibernate框架来开发《软件体系结构》课程的实验一。

  MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC设计模式减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。而Struts是MVC的一种实现,它将Servlet和JSP标记用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。

  视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

  控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action From,并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。

  模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

  流程:在Struts中,用户的请求一般以*.action作为请求服务名,所有的*.action请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.action均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。

  Spring真正的精华是它的Ioc模式实现的BeanFactory和AOP。Spring它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Management。

  Spring能有效地组织中间层对象,不管是否选择使用了EJB。如果仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。

  Hibernate使用了J2EE架构中的如下技术:JDBC、JTA、JNDI。其中JDBC是一个支持关系数据库操作的一个基础层;它JNDI和JTA一起结合,使得Hibernate可以方便地集成到J2EE应用服务器中去。Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。Hibernate可以用在任何JDBC可以使用的场合。Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。

  Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合。Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。Hibernate 的性能非常好,因为它是个轻量级框架,映射的灵活性很出色。

  本学期《JAVA EE架构程序设计》一课中正在学习Spring + Struts + Hibernate框架联合开发,借此机会可以更好的运用三大框架,更好的理解和掌握三大框架,所以我选择它!

转载于:https://www.cnblogs.com/BUANG/p/5468548.html

关于《实验一》的框架选择相关推荐

  1. android集成测试框架,Android单元测试框架选择

    Android单元测试介绍 处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地.单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维 ...

  2. 如何进行机器学习框架选择

    http://blog.itpub.net/31542119/viewspace-2200317/ 人工智能正值发展热头,为了开发和部署人工智能应用程序,涌现出了很多机器学习框架.这些框架直接跨越开发 ...

  3. SpringCloud入门 - 分布式事务【概念、常见框架选择 - tx-lcn】

    分布式事务简介: 事务: 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 本地事务:  SqlSessionfactory   --> 一个数据库范围类事务管理. 分 ...

  4. 在react里写原生js_小程序原生开发与第三方框架选择

    最近正在更新<微信小程序入门与实践>一书的第二版.书中有一章节谈到了"多样化的小程序开发",摘取并加以整理分享给各位开发者.我一向不推荐也不提倡公众号阅读学习编程,文章 ...

  5. RPC简介及框架选择

    简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...

  6. APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...

  7. SpringCloud(6) 分布式事务【概念、常见框架选择 - tx-lcn】

    分布式事务简介: 事务: 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 本地事务:  SqlSessionfactory   --> 一个数据库范围类事务管理. 分 ...

  8. Springboot单体架构搭建|第四章 前端框架选择和菜单管理

    第四章 前端框架选择和菜单管理 前言 vue-element-admin 改造vue-element-admin 菜单管理 用户&&角色&&菜单 总结 前言 该架构是参 ...

  9. 跨平台的桌面应用开发,技术框架选择

    跨平台的桌面应用开发,技术框架选择 个人的需求: 能够快速开发:毕竟生产力很重要. 打包后的体积不能太大:用户大部分是普通客户,不会安装基础环境. 跨平台:日常主要还是用mac做为主力开发机,所以强烈 ...

  10. 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷

    微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 posted on 2016-07-30 2 ...

最新文章

  1. 超低费用将推动BCH在Token系统中脱颖而出
  2. php文件上传指定路径,php上传文件到指定文件夹
  3. Azure Stack运维工具Azure Stack Tools的使用及实战
  4. python的linux电脑上图标不见了怎么办_电脑桌面及桌面图标消失不见怎么找回?
  5. 向高端应用进军 杰和推高计算四路服务器
  6. Linux 命令(83)—— groups 命令
  7. Beego 使用笔记
  8. 导入web项目运行报错找不到包
  9. 多智能体MAPPO代码环境配置以及代码讲解
  10. 扫雷源代码(C语言)
  11. python数据清洗入门教程(完整版)
  12. yy开播特效软件小猫虚拟换肤自定义背景衣服DIY
  13. 在线SVG转换,支持SVG to PNG、SVG to JPEG、SVG to WEBP 图片转换操作-toolfk程序员在线工具网
  14. python-转义字符及其使用
  15. 医院私有云架构统一灾备中心建设最佳实践
  16. 设置TextView滚动
  17. Word文档或PDF转图片
  18. 如何更改电脑桌面壁纸,换上自己想要的壁纸?
  19. 数据分析、数据挖掘、数据运营有啥区别?
  20. 德州扑克 java 算法_德州扑克算法幕后研发者:AI如何打败顶级人类牌手?

热门文章

  1. 简述什么是蜜罐?如何分辨一个系统是不是蜜罐.
  2. iOS DLNA Cyberlink,PlatinumKit库完成DLNA功能
  3. python 交互式编程与脚本式编程
  4. JVM 垃圾回收就是这么简单(转载)
  5. 手游的世界观和方法论
  6. OSChina 周一乱弹 ——爱丽三个小时没吃鱼罐头了
  7. 使用Python对手机号进行加密,超级简单
  8. 安装django-rest-swagger报错 command: 'D:\Anaconda\python.exe' -u -c 'import sys, setuptools...的解决办法
  9. 学习成绩进行评等级(0~100)
  10. error: cannot pull with rebase: Your index contains uncommitted changes.