`
Angel_Night
  • 浏览: 18468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ssh优缺点

阅读更多

面试归来

技术面试官叫我谈谈 ssh优缺点

平时用起来倒是挺顺手..但是从来没有系统的总结过..导致很多点会都没有说出来..

这次我认真总结了一下...


常说的好处 开源
常说的坏处 配置文件过大我就不提了


struts

优点:
          收集,验证表单数据相比传统servlet简单
          优雅的实现可配置的请求转发

缺点:
          属侵入设计(actionform,action都无法复用)
          与serlvetAPI严重耦合..无法摆脱容器
          action与web层耦合.不方便测试
          标准struts的action是非线程安全(很多简历上写着"精通Struts"的高手们都忽视的问题)

不熟悉:
          struts标签库没怎么用过(常用jstl)
          国际化只学过,没用过.停留在demo级别
          validation.xml(配置文件写多了,有时候也想逃避)
          支持表现层技术单一(一直作为struts的缺点来说...但是我也就会jsp而已)


Spring

优点:
          IoC虽然不好形容,但是我从最开始接触spring时就觉得这是个很大的优点
          aop(我自己写过的aop就只有日志...)
          对象容器
                管理对象的生命周期(集成struts摆脱线程问题)
          测试也变得方便
          多数代码没有侵入spring的API
          对于hibernate有很好的支持

          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来

缺点:
          缺点我不好提出来..without ejb我没看过..甚至ejb我也不会..
          我也就简单用用...不过我听说过这些缺点(如果有错请及时指正)

          如果开发者设计不出合理的接口.导致一改就改多处.反而造成不便
          不支持分布式部署。
          不是一站式方案(开放的体系和封闭的体系这种话题我从来参与不进去..但是还是常看看的)

 

          使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计。


hibernate

优点:
          ORM 使数据层更加对象化..摆脱所谓的阻抗不匹配
          sql方言的存在使得开发不用过多考虑 数据库差异 的问题
          非侵入式设计

缺点:
          个人感觉熟练使用的话曲线太陡..(尤其对于多表间复杂查询)

          不太适合做复杂的select语句查询

不熟悉:
          Transaction(一般都直接交给spring了..接触不错..demo级别)
          缓存机制(Session的缓存和SessionFactory的缓存(内置缓存和外置缓存))

 

          聚集性操作数据(这种时候jdbc也白费吧...还是存储过程)

错觉:
          hibernate对于瑕疵的处理不够
          比如:有entity-name的映射 save 就抛错这是我很久以前就发现的问题..一直没有得到修正..难道这不是问题?


可能高手从我总结就可以看出我水平有多菜....

不过还是不要吝惜口水 喷我吧..

在javaeye被喷 只会使我进步  面试时候被喷 少的就是机会了

 

 

 

内容更改记录:

 

javaeye_id 修改原因(也就是回复部分内容)
xiaoyuqi00 hibernate优点:非侵入式设计
这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria
geeksun

使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计

blackstreet 不太适合做复杂的select语句查询

 

 

 

 

分享到:
评论
78 楼 xiao3er 2010-11-16  
我写了 有一两个网站了 可是 都是用公司 封装好的框架 根本就不涉及这些 而且 配置也很多
77 楼 wangdgsc 2010-09-06  
struts1,目前项目中一直在使用,我觉得一个企业使用struts1或struts2,又或者spring mvc,他们的关系应该不会很大,如果一个公司使用struts1用了三四年,然后说struts2很火,很牛X,难道就都去用struts2?我觉得不太现实,框架只是让大家从比较繁琐在底层中解脱出来,让大家能更好的关注业务,用什么不都能达到目的
hibernate3, 最大的好处是进行数据添加,修改,删除的时候方便,如果是简单的查询还好,复杂的查询性能好像不是很高,当然,也可能是我水平菜,没能体会到其中的精髓吧,
spring,一直在用,缺点暂时没有感觉到
76 楼 Tracy-Lcz 2010-09-06  
Angel_Night 写道
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用


是的,我确实很菜...接触web开发时间很短 属于应届毕业生吧...

和那些简历上写着精通ssh的毕业生不同 我只能简单用用



不过后半句是不是有些夸张了...

08年Indeed全球Java职位需求技能统计

mvc框架百分比 struts2不过才0.2% struts1有80%

虽然数据比较久了(我没找到新的 也不会统计...)

但是也不会迅速消亡到"居然还有人在用这种地步吧"?

毕竟struts1比较老了..每个公司都有相应的再封装...


可能是文科的吧 用了夸张的修饰我这种不会写作文的家伙还给认真了








不要随便说别人菜。
75 楼 lyy3323 2010-08-19  
<div class="quote_title">Angel_Night 写道</div>
<div class="quote_div">
<p>面试归来<br><br>技术面试官叫我谈谈 ssh优缺点<br><br>平时用起来倒是挺顺手..但是从来没有系统的总结过..导致很多点会都没有说出来..<br><br>这次我认真总结了一下...<br><br><br>常说的好处 开源<br>常说的坏处 配置文件过大我就不提了<br><br><br><span style="font-size: small;"><strong>struts</strong> </span><br><br>优点:<br>          收集,验证表单数据相比传统servlet简单<br>          优雅的实现可配置的请求转发</p>
<p>        <span style="color: #ff0000;">  你忘记说MVC概念对servlet模式影响深远。。。。</span></p>
<p><br><br>缺点:<br>          属侵入设计(actionform,action都无法复用)<br>          与serlvetAPI严重耦合..无法摆脱容器<br>          action与web层耦合.不方便测试<br>          标准struts的action是非线程安全(很多简历上写着"精通Struts"的高手们都忽视的问题)</p>
<p><span style="color: #ff0000;">     Struts的FormBean把所有的数据都作为String类型,需要额外转换。</span></p>
<p><span style="color: #ff0000;">配置文件还是略显繁琐。。</span></p>
<p><br><br>不熟悉:<br>          <span style="color: #ff0000;">struts标签库没怎么用过(常用jstl),既是缺点也是有点。。<br></span>          国际化只学过,没用过.停留在demo级别<br>          validation.xml(配置文件写多了,有时候也想逃避)<br>          支持表现层技术单一(一直作为struts的缺点来说...但是我也就会jsp而已)<br><br><br><span style="font-size: small;"><strong>Spring</strong> </span><br><br>优点:<br>          IoC虽然不好形容,但是我从最开始接触spring时就觉得这是个很大的优点<br>          aop(我自己写过的aop就只有日志...)<br>          对象容器<br>                管理对象的生命周期(集成struts摆脱线程问题)<br>          测试也变得方便<br>          多数代码没有侵入spring的API<br>          对于hibernate有很好的支持<br>          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来</p>
<p><span style="color: #ff0000;">比如singleton等等,解耦。。</span><br><br>缺点:<br>          缺点我不好提出来..without ejb我没看过..甚至ejb我也不会..<br>          我也就简单用用...不过我听说过这些缺点(如果有错请及时指正)<br><br>          如果开发者设计不出合理的接口.导致一改就改多处.反而造成不便<br>          不支持分布式部署。<br>          不是一站式方案(开放的体系和封闭的体系这种话题我从来参与不进去..但是还是常看看的)</p>
<p> </p>
<p>          使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计。 </p>
<p> </p>
<p><span style="color: #ff0000;">过于灵活算不算一个缺点呢?</span><br><br><br><span style="font-size: small;"><strong>hibernate</strong> </span><br><br>优点:<br>          ORM 使数据层更加对象化..摆脱所谓的阻抗不匹配<br>          sql方言的存在使得开发不用过多考虑 数据库差异 的问题<br>          <span style="text-decoration: line-through;">非侵入式设计</span> </p>
<p> </p>
<p><span style="color: #ff0000;">不好说什么,可以对比一下ibatis.....</span><br><br>缺点:<br>          个人感觉熟练使用的话曲线太陡..(尤其对于多表间复杂查询)</p>
<p>          不太适合做复杂的select语句查询<br><br>不熟悉:<br>          Transaction(一般都直接交给spring了..接触不错..demo级别)<br>          缓存机制(Session的缓存和SessionFactory的缓存(内置缓存和外置缓存))</p>
<p> </p>
<p>          聚集性操作数据(这种时候jdbc也白费吧...还是存储过程)<br><br>错觉:<br>          hibernate对于瑕疵的处理不够<br>          比如:有entity-name的映射 save 就抛错这是我很久以前就发现的问题..一直没有得到修正..难道这不是问题?<br><br><br>可能高手从我总结就可以看出我水平有多菜....<br><br>不过还是不要吝惜口水 喷我吧..<br><br>在javaeye被喷 只会使我进步  面试时候被喷 少的就是机会了</p>
<p> </p>
<p> </p>
<p> </p>
<p>内容更改记录:</p>
<p> </p>
<table class="quote_title" style="height: 75px;" border="1"><tbody>
<tr>
<td>javaeye_id</td>
<td>修改原因(也就是回复部分内容)</td>
</tr>
<tr>
<td>xiaoyuqi00</td>
<td>hibernate优点:非侵入式设计<br>这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria</td>
</tr>
<tr>
<td>geeksun</td>
<td>
<p>使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计</p>
</td>
</tr>
<tr>
<td>blackstreet</td>
<td>不太适合做复杂的select语句查询 </td>
</tr>
</tbody></table>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<p> </p>
<p> </p>
74 楼 laserdance 2010-08-18  
我面试也被问ssh了,其实我也没怎么用过,我讲一下我自己的理解,请用过的同志给我扫下盲,struts+hibernate+spring,  spring 提供xml配置文件和事务管理,可以配置数据源,hibernate 上面有同学讲了,提供java类和配置文件 对应database 表中一条记录,可以由myeclipse自动来生成,这里需要手动配置一下hbm.xml,struts提供action,,,web层 提供action和service,此service接口屏蔽了底层操作database的实现,由spring将dao(是具体的database操作实现)注入到service中,如果系统中用到了缓存,说hibernate提供一级缓存,其实就是内存缓存(也可以自己实现,其实就是将对象放到Map中,下次请求时先检查Map,如果有则直接返回,没有,在去database查),二级缓存据说是留了接口,可以ehcache来实现,我在生产环境中没用过,不敢评价
ssh 怎么分配MVC这三层架构呢,,我不是很清楚,请大家帮我扫下盲,V C 由struts的jsp和action ,actionMapping来实现,,M 由hibernate 来实现,spring 只应用了IoC功能,在web层应用时才将dao注入service,请指教
73 楼 dothwinds 2010-07-20  
liukai 写道
SSH框架不管有什么优缺点,能精通的很少很少.
很多人对SSH只是知其然而不知其所以然.那些问SSH有什么优缺点的面试官
我觉得水平大多数也一般.
有高手用过springMVC 和SSH的么?
话说我工作以来一直用的springMVC 感觉很良好
基本上做B/S开发完全够了~

Spring3.0以后的Spring MVC比较好,用的挺舒服;至于Struts2感觉有点臃肿,太多的拦截器。。。
72 楼 liukai 2010-07-19  
SSH框架不管有什么优缺点,能精通的很少很少.
很多人对SSH只是知其然而不知其所以然.那些问SSH有什么优缺点的面试官
我觉得水平大多数也一般.
有高手用过springMVC 和SSH的么?
话说我工作以来一直用的springMVC 感觉很良好
基本上做B/S开发完全够了~
71 楼 抛出异常的爱 2010-07-14  
如果从windows上传文件会把文件名转成小写....
70 楼 finallygo 2010-07-14  
怎么没有人觉得ssh整合的web项目启动很慢呢?
69 楼 bluemusic 2010-07-14  
用了struts1.x有段时间了
也来谈谈感受
s1的确有线程不安全的毛病,这个的确是个比较大的忌讳,我们用框架的目的是为了让开发简化,如果线程安全的问题导致开发复杂那可以说是个问题,但不排除有好的解决方案,没有封装过使其变成安全的,暂时不发表评论
有人说测试不方便,测试不方便那是因为赤裸裸的s1.x好比1个刚买来的智能手机,你不装点常用软件,那当然用起来有些不爽,可以将action重新封装,然后写成s2.x类似的,自己的action都继承自己封装的action,然后这些action就会很像pojo了,测试就不成问题了
hib3用过一段时间了,不敢说有深入研究,调用存储过程得依赖原生API,复杂的sql也能支持(关联表太多),另外没有足够的缓存支持最好别用hib,还是封装下好:)
spring的缺点不是配置太多,相反认为配置多是给予一定的灵活性
同样封装过后可以做懒人做的事,套用je名句约定大于配置,而Rod Johnson本人做的事情是让spring轻量级,减少入侵。
真要说缺点的话就是有人会乱用spring的API,多些规范和封装就能解决如此问题
世上没有银弹,抨击ssh的是希望看到有更好的解决方案,有时只是缺少暮然回首的那份勇气,之前有提出其他方案的这里就不例举了
68 楼 ynstudio 2010-02-10  
夜之son 写道
我们都希望自己很强,可是技术就像是风,毫无方向啊。I am a bit green.

呵呵,这句话蛮好玩的。技术就像风一样,哈哈。你是不是也是风一样的哥们啊。
67 楼 424a 2010-02-04  
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用

说这种话的人其实才是菜鸟,学了几天struts2以后,就觉的自己天下无敌了,然后所有用struts1的人都是菜鸟,所有用的struts1的系统都是垃圾系统,但他自己根本连个项目都没做过!!他本身就是一个大杯具!!
66 楼 zcy860511 2010-02-04  
Angel_Night 写道
archerfrank 写道
action线程不安全也算是缺点么。。。


线程这个地方的确我不是很熟悉

根据我浅薄的线程知识 不要在action中直接定义实例变量 问题就不会很大(不肯定啊)

但是不在action中定义对spring ioc有些不方便...

不知道能否给解释一下 我的线程的确连入门都不好说

线程安全的问题本来就应该交给容器去做,一个真正高速的应用程序应该是Prototype调用,而不应该老和spring默认的singleton一样,因为singleton必然带来多用户使用时的同步问题,所以一般我都不会选择singleton,确实不得已要使用,也会使用部分同步,或者使用原子操作避免同步的发生

举个简单的例:HashMap和HashTable内部实现一样,唯一不同的就是同步,后者是同步的,但是前者效率是后则的2倍以上
65 楼 zcy860511 2010-02-04  
Hibernate实现了面向对象的SQL创建方式Criteria,这种方式可以实现所有的查询,这样在可读性上也提升了
64 楼 zcy860511 2010-02-04  
withoutme_hw 写道
Hibernate还有一个缺点,面试官提示我说Hibernate有没有什么不能做到,而JDBC可以做到的?
Hibernate不能再运行时动态创建表,JDBC是可以做到的

动态创建表本来就不是一个好习惯,或者说这是一个大忌!
为什么?你自己想吧,你在运行程序的时候真的需要动态添加实体类么?你确定是实体类不是实体对象!!
63 楼 J-catTeam 2010-02-03  
1.struts第一个优点应该是实现了MVC。
并且针对线程安全的问题,struts1会有,因为它默认是采用单例,struts2就不是·一个请求一个实例。
struts2对于表现层的支持已经很不错了。并且做的很全面
2.spring的核心就是IOC和管理。
还有一个更重要的原因就是spring因为有大团队支持的原因所以对于其他开源框架的支持快速并且优秀。
对于spring的缺点目前我觉得是太过于臃肿了,当然这个也不能避免了。至于lz你说的他利用反射来做,我只能说,没有任何一个框架不会用到反射,因为框架是用一致的形式去解决未知的代码,只能用反射做。
3.hibernate的优点·我仅仅认为它是第一个ORM的框架,在MVC的切分和JDBC的封装上做的靠前。
对于他的HQL和他的缓存我并不认同
HQL会导致你根本无法执行你真正想执行的sql,调错或者自己查看代码的时候十分困难,这种hql设计已经起到干扰作用了,当然平时我们写一个类似于select * from user where username=‘jason’的这种sql是无所谓的,但是在大型应用中sql是复杂的,多变的,所以对于这一点iBATIS做的很好,不从根本上去干扰sql,但是又起到管理和切分的作用
hibernate的缓存并不是高效的,在一般的开发中对于缓存都会有专门的缓存框架,如果使用了hibernate,就会太过于依赖它的缓存,没有缓存他的效率不会太高,所以一般的企业开发不采用hibernate
加油
62 楼 foxlish 2010-01-12  
struts1.X的标签纯粹是个摆设
61 楼 leejon 2010-01-11  
lizhuang 写道
Struts1优点:严格的采用MVC方式进行开发,便于分工。V层其实是吹牛,至今就没看到美工会写JSTL标签。
Hibernate缺点:主要是大规模写入数据的时候会超慢。

这篇贴应该归位新手帖。


弱弱的问一下?美工写前台页面取数据用<%%>?
60 楼 gavin.zheng 2010-01-01  
我说下优缺点吧,面试也问到过,不过面试时老回答不上来:
struts2 优点:mvc的action,view层分离,c使用配置文件控制方便,2比1的线程安全,而且不需要使用接口,可以完全脱离容易
缺点:插件结构多而且复杂,配置起来麻烦.自定义标签需要改写结果集,也就是要改造框架,巨麻烦.无论是使用tag或freemarker
spring
优点,aop的切面开发给事务编程带来了非常大的实惠,配置事务容易
缺点,过度编程,太重细节,配置方式太多样
hiber
优点:把数据转化弄成配置方式,为object关系,到entity的er关系转换带来优势,提供了应用到数据的完整映射. 间接带来soa发展,cacha结构带来实质上的好处,带来实质上的数据访问优化
缺点.还是配置.
hql已经标准化了
59 楼 Angel_Night 2009-12-15  
daquan198163 写道
Angel_Night 写道
archerfrank 写道
action线程不安全也算是缺点么。。。


线程这个地方的确我不是很熟悉

根据我浅薄的线程知识 不要在action中直接定义实例变量 问题就不会很大(不肯定啊)

但是不在action中定义对spring ioc有些不方便...

不知道能否给解释一下 我的线程的确连入门都不好说

如果action是singleton并且定义了可变的实例变量(如某个状态标识),则线程不安全;
这不影响你用spring ioc,因为注入的东西往往也都是datasource、service、dao等,它们都是初始化以后就不会再被改变了,并且它们本身也是可以做到线程安全的。
至于它们如何保证线程安全,道理同上。



哦 原来是这样啊...多谢

相关推荐

    ssh框架优缺点

    ssh框架优缺点ssh框架优缺点ssh框架优缺点ssh框架优缺点ssh框架优缺点

    SSH框架的优缺点

    SSH框架的优缺点,重点讲述了轻量级SSH框架的特点

    综合论述SSH的优缺点

    NULL 博文链接:https://ak8695252.iteye.com/blog/2039959

    SSH架构优缺点分析

    本资料详细介绍了SSH架构的优缺点,可作为面试资料备用!

    ssh框架的介绍以及优缺点

    ssh框架介绍及优缺点,体现出JAVA中的SSH框架在同级开发中的优势

    SSH架构优缺点分析.rar

    本资料详细介绍了SSH架构的优缺点,可作为面试资料备用! 常说的好处 开源 常说的坏处 配置文件过大我就不提了 struts 优点: 收集,验证表单数据相比传统servlet简单 优雅的实现可配置的请求转发 ...

    ssh架构优缺点(转)

    NULL 博文链接:https://guona329.iteye.com/blog/1597773

    ssh框架优缺点 struts hibernate spring

    面试时,你也被经常问道ssh是什么这个问题吧?即使今天没有问到,但总会有一天会被问到的,你准备好了吗? 我这里提供总结好的理解一边即可应付面试官的提问.

    SSH(Spring Struts Hibernate)的优缺点

    Spring Struts Hibernate是当前流行的开源J2EE框架,但是SSH的优缺点是什么样的呢?我们有必要来对比一下

    Struts,Spring,Hibernate优缺点

    系统的讲解目前最流行的SSH开源柜架开发项目用到的struts、spring 及hibernate各自的优缺点。

    整理的各种框架的优缺点

    整理的各种框架的优缺点总结哦 希望能帮助到有需要的 童鞋

    三大框架优缺点

    改文档是一个非常实用的 三大框架解说文档 通过该文档 初学者能更深一步对SSH框架的了解

    SSH.rar_SSH框架简介_ssh

    ssh架构的优缺点,详细介绍ssh架构的优缺点,是面试的很好资料

    strut spring hibernate 优缺点

    解说了,ssh三大框架,struts,spring, hibernate 各个的优缺点

    J2EE三大框架面试的常见问题

    SSH优缺点 1.struts struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。 优点: Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者...

    SSH框架详解

    个人中的SSH详细介绍,包括struts1的工作原理、Struts1优缺点(为什么要用strust1)、struts1的工作原理及基本配置详解、struts2工作原理、struts2运行机制、Struts2的工作流程、Struts2工作原理、Struts1与Struts2...

    框架的优缺点

    这个文档写的是三大主流框架的有点和缺点,更加让我们能够深入的了解SSH框架。

    SSH_整合资料

    SSH_整合资料,整合步骤以及各个框架的优缺点总结!

    SSH框架的理解及其应用实践

    这是一篇关于SSH框架爱的课程设计论文,里面大致介绍了Spring、Struts及Hibernate三个框架的优缺点

    SSH整合框架

    能够快速地了解SSH整合框架的研究与应用,介绍了三大框架的优缺点,以及日后开发中可以改进的方法。

Global site tag (gtag.js) - Google Analytics