框架重难点分析

本文详细分析了SSH三大框架Struts2、Hibernate和Spring的核心组件、工作流程及优缺点。Struts2作为MVC框架,通过控制器实现业务逻辑与视图的分离,优点包括丰富的标签库和异常处理机制,但存在配置繁琐和线程安全问题。Hibernate是ORM框架,简化了数据访问,支持延迟加载,但在批量操作和性能上有局限。Spring则以IOC和AOP为核心,提供对象管理和事务处理,实现低耦合,同时具备多种注入方式。
摘要由CSDN通过智能技术生成
1、谈谈你对Struts2的理解。
1)struts2是一个MVC框架,MVC是一种开发模式,把业务逻辑代码与视图代码分离,通过控制器连接业务逻辑与视图。MVC将应用程序分成了视图、模型、控制器三部分,使代码结构层次清晰、降低耦合度、代码重用性高。
2)结合Struts2处理请求的工作流程加以说明:
客户端发送一个请求到服务器,tomcat会接收这个请求, tomcat会读取项目中的web.xml中的配置,判断请求是否符合Struts2过滤器StrutsPrepareAndExecuteFilter过滤的路径,如果符合会把这个请求交给Struts2处理,StrutsPrepareAndExecuteFilter会分析请求路径,根据Struts.xml中的配置,请求路径匹配package标签的namespace属性加上action标签的name属性,跳转到对应的action类,默认执行execute方法,如果使用动态方法调用,会执行action类中的对应方法,方法执行完成后会返回一个字符串,这个字符串对应Struts.xml中action标签下的result标签name属性根据result标签的配置跳转到对应的jsp页面,在jsp页面中呈现数据,返回给客户端。
3)结合Struts2优点说明:
a、实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
b、有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率
c、页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
d、提供Exception处理机制 .
e、数据库链接池管理
f、支持I18N

2、谈谈你对Hibernate的理解。
1)hibernate是ORM框架,ORM是对象关系映射,类—>表,属性—>表中的列,对象—>表中的每一条数据,是为了解决面向对象与关系数据库之间互不匹配现象的技术。使我们编程的思想更面向对象了,不用去考虑关系型数据库。
2)hibernate工作流程是:configuration类读取并解析hibernate.cfg.xml配置文件,读取解析映射信息,创建sessionFactory,打开session,创建事务,持久化操作,关闭session,整个应用停止关闭sessionFactory。
3)结合hibernate优点说明:
a、程序更加面向对象,提高开发效率
b、提高了生产率,不用写SQL语句
c、hibernate使用的是hql,支持方言配置,方便数据库移植
d、对jdbc代码进行封装,编程更简便了
e、hibernate是个轻量级框架,对代码无侵入性
3、你对Spring的理解。
1)Sping是一个轻量级框架,设计原则是非侵入性的。Sping核心是IOC容器,IOC是一种编程思想,是一种架构艺术,是用来管理控制对象的生命周期和对象之间的关系,通过配置文件进行注入,很好的实现了对象与对象之间解耦。
2)IOC工作原理: IOC实现了工厂模式,通过读取application.xml配置文件中的<bean>标签的类,注入到IOC容器中,通过构造或set方法注入,产生BeanFactory,BeanFactory通过getBean方法获取对象。
3)Spring还提供了另外一种重要编程思想AOP,AOP称为面向切面编程,可以动态的将主线业务逻辑代码与实现功能代码分离,为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
4)Spring提供了很多第三方框架的整合,如:hibernate、struts、mybatis、web service等,使用IOC管理所有的Java bean,这样可以让框架与框架之间偶尔度降低,方便项目的管理,提高开发效率。
4、Struts2优缺点
优点:
1)实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
2)有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率
3)页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
4)提供Exception处理机制 .
5)数据库链接池管理
6)支持I18N
缺点
1)转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
2)Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。
3)测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值