最近在京东一次电面时,被问到Strust2,Spring,Hibernate的区别时,才返现对Strust2和Spring的优缺点理解的不是很透彻,于是赶紧复习了一下。
首先是Struts2的优缺点大概有如下几条:
优点:①.Struts2实现了MVC思想,是代码的整体层次结构更加明显
②.Struts2具有很大的灵活性,在Struts-default.xml文件中定义了大量的默认拦截器,而这些默认的大量拦
截器可以为用户定制特定需求的拦截器栈,从而实现用户的需求
③.Struts2具有丰富的标签库,可以为开发提供便利
④.Struts2也实现了AOP思想
⑤.通过Struts.xml配置文件来方便控制前端与后台数据的交互行为
缺点:①.Struts2在后台获取前端数据比较繁琐实现方法通常有两种(setter()getter() 方法,实现modelDrivern 口,重写getModel()方法)
②.校验比较繁琐
③.Struts2有漏洞,一个是使用缩写的导航参数前缀时的远程代码执行漏洞,另一个是使用缩写的重定向参
数前缀时的开放式重定向漏洞(这一条是百度的,如有侵犯,请联系博主)
接下来是是Spring的优缺点:
优点:①.Spring最大一个优点是DI(依赖注入)或者说是IOC(控制反转),通过这种方式将控制权交给用户,用户只需要
将相关参数注入进去即可,实现了非侵入性编程
②.另外一大优点是Spring实现的AOP(面前切面编程)思想
③.Spring实现了事务管理,使得事务管理不再需要我们手动实现,例如与hibernate整合后,hibernate的事务
管理交给Spring来管理,是开发变得更加简单
缺点:①.由于Spring使用了大量的反射,使得项目运行速度较Servlet慢一些
最后是Hibernate的优缺点:
优点:①.由于Hibernate采用ORM(对象关系映射)思想,使用Hibernate与数据库交互变得更加简单
②.Hibernate提供了大量的方法,例如查询一个结果集,将相关属性自动装配置至对象上,从而避免了用户自
己手动来对对象的属性进行赋值
③.Hibernate自己实现了事务管理的功能,是开发更加简单
缺点:①.由于Hibernate是自己来产生CRUD语句,而不是由用户来管理,导致查询数据库数据的效率比较底下
②.个人觉得Hibernate的配置文件比较复杂,特别是自己实现多对多的映射功能,由于需求不同,导致配置
的相关属性不同