`
Angel_Night
  • 浏览: 19019 次
  • 性别: 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语句查询

 

 

 

 

分享到:
评论
38 楼 xiaxiaorui2003 2009-12-14  
Angel_Night 写道
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用


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

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



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

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

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

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

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

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


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








反正我们现在还在用struts1
37 楼 giginet 2009-12-14  
ivan18248 写道
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用

你是典型的找抽型的啊  哈哈

哈哈,我就是还在用1.x的那个人,而且要命的是,我现在还用的很起劲。脱离实际谈一个框架好坏是没有任何意义的,只要用的顺手,用的舒服就好。
36 楼 wiwiluo 2009-12-14  
mwmw 写道
哎,精通struts,这句话很大的,额是不敢写,写了肯定被问死。任何一个框架都有很多东西,这些东西不可能面面俱到,再说这些框架,都面面俱到了又如何呢?也就是一个框架。ssh最近比较火,但是以后呢? 框架的学习只是停留在会用就可以了,大的系统中是尽量少用框架,多用自己的东西。

struts现在应该很多公司都在用struts1.x;其实版本号就是一个号码而已,原来还不是一个样子。


struts1和2差别很大的!~基本上不怎么相干了!~
35 楼 beifengbei08 2009-12-14  
我觉得楼主总结的很好,很清晰,并且给人很诚实的感觉……面试应该不会吃亏
34 楼 beifengbei08 2009-12-14  
web开发不可避免的对客户端传来的数据进行处理,并且做出相应的反应,struts就是对这个过程中相对不变的部分内容进行了封装,我感觉就是这里让我们省了很多劲
33 楼 Angel_Night 2009-12-14  
mwmw 写道
哎,精通struts,这句话很大的,额是不敢写,写了肯定被问死。任何一个框架都有很多东西,这些东西不可能面面俱到,再说这些框架,都面面俱到了又如何呢?也就是一个框架。ssh最近比较火,但是以后呢? 框架的学习只是停留在会用就可以了,大的系统中是尽量少用框架,多用自己的东西。

struts现在应该很多公司都在用struts1.x;其实版本号就是一个号码而已,原来还不是一个样子。



最近类似的问题很多,我过去也非常喜爱底层实现。
几个项目下来,我对框架的认识多了,观点也就随之改变了

框架是可复用的设计构件,同时也规定了应用的体系结构,是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务。使用框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。用更多的精力去关注业务的东西


“大的系统中会尽量少用框架”没错。。我一个非常好的朋友在一个中国还算能数的上号的软件公司工作(好长的一句话啊。。)
我认真看过他们的项目,他们不会用ssh没错(spring会用,毕竟有好多东西封装过以后变的简单了)。
但是他们写一个合适自己业务的框架,使他们的开发更加规范化,效率,降低项目成本,对控制进度也更加有把握
(如果没个人都从servlet jdbc来写..2-3个还能接受..上百人都这么写代码还能看吗)


而且一些非常底层的小框架或者后来人们直接叫他们jar包了。。
现在轮子用的好好的情况下。。有谁会重新做轮子呢?


每天用ssh,怎么可能永远停留在会用而已呢?
人们最初为什么选择开源框架?

而且这些经验也不会变的没用的。我还是20来岁的小伙子有的是精力。那些30-40来岁的大哥们,对于他们来说经验就是他们能继续吃到饭的一部分因素
就好像Ajax技术火了,很大程度上是它利用起来过去人们熟悉的知识,使过去的经验可以转换到新的东西上


稀里糊涂的写了一堆
把投简历的大好时间都错过了。。

32 楼 mwmw 2009-12-14  
哎,精通struts,这句话很大的,额是不敢写,写了肯定被问死。任何一个框架都有很多东西,这些东西不可能面面俱到,再说这些框架,都面面俱到了又如何呢?也就是一个框架。ssh最近比较火,但是以后呢? 框架的学习只是停留在会用就可以了,大的系统中是尽量少用框架,多用自己的东西。

struts现在应该很多公司都在用struts1.x;其实版本号就是一个号码而已,原来还不是一个样子。
31 楼 LookAtPic 2009-12-14  
大家都说 struts1.x的action和servlet耦合度高? 本人愚昧,这个耦合度在实际项目中,有什么太大的意义么?而紧紧是一个测试使大家认为这个就是action的缺点么?本人觉得在web层测试的意义不大,所以 我觉得这点算不上什么太大的缺点,struts的action只是负责分发,真正的业务逻辑是在你的service,有必要测试么?单元测试也只是针对service的。本人愚昧,请高人点醒!
30 楼 qiuxiaoj 2009-12-13  
一个诚实的孩子,值得鼓励
29 楼 grandboy 2009-12-13  
好久没用这些了,都不敢说话了。
28 楼 blackstreet 2009-12-13  
说下hiberante吧
最大的好处是做产品时,数据库可以是任何一种,因为把SQL都封闭了

不好的地方有:
比如我只取一个表几个字段,为了便于操作大多数情况下取的是一个持久化的对象集合,不要的也一起过来了

知识点太多

不太适合做复杂的select语句查询
27 楼 ivan18248 2009-12-13  
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用

你是典型的找抽型的啊  哈哈
26 楼 liran_java 2009-12-13  
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用

你用什么好东西,给大家分享一下
25 楼 Angel_Night 2009-12-13  
haojia0716 写道
一开始全投的是新手贴,为什么现在全变成良好贴?
真他妈垃圾!


投什么贴重要么?

你觉得在javaeye有个良好贴    出门脸上就有金光了
还是你觉得投成新手帖,隐藏贴  出门就没脸了?


我在这发帖是想叫大家看看我总结的 是否全面 是否正确 我好修改 继续完善

如果你觉得我很垃圾 直接站内信骂我好了 不要让大家都看到你的 污言秽语

还有如果你真的想打击我...那挑我文章的毛病(我只在意这个..骂我只能脏了你的嘴)
24 楼 shily_yuanling 2009-12-13  
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用

晕~~虽然我们自己用的struts2但是还有很多人在用struts1好不好啊?讨厌踩别个人的人,即使高手又怎么了,总不是从不知道到明白啊~~有什么了不起的……
23 楼 zhongxinhu 2009-12-13  
<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>          优雅的实现可配置的请求转发<br><br>缺点:<br>          属侵入设计(actionform,action都无法复用)<br>          与serlvetAPI严重耦合..无法摆脱容器<br>          action与web层耦合.不方便测试<br>          标准struts的action是非线程安全(很多简历上写着"精通Struts"的高手们都忽视的问题)<br><br>不熟悉:<br>          struts标签库没怎么用过(常用jstl)<br>          国际化只学过,没用过.停留在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><br>          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来<br><br>缺点:<br>          缺点我不好提出来..without ejb我没看过..甚至ejb我也不会..<br>          我也就简单用用...不过我听说过这些缺点(如果有错请及时指正)<br><br>          如果开发者设计不出合理的接口.导致一改就改多处.反而造成不便<br>          不支持分布式部署。<br>           不是一站式方案(开放的体系和封闭的体系这种话题我从来参与不进去..但是还是常看看的)<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><br><br>缺点:<br>          个人感觉熟练使用的话曲线太陡..(尤其对于多表间复杂查询)<br><br><br>不熟悉:<br>          Transaction(一般都直接交给spring了..接触不错..demo级别)<br>          缓存机制(Session的缓存和SessionFactory的缓存(内置缓存和外置缓存))<br><br>错觉:<br>          hibernate对于瑕疵的处理不够<br>           有entity-name的映射 save 就抛错这是我很久以前就发现的问题..难道这不是问题?<br><br><br>可能高手从我总结就可以看出我水平有多菜....<br><br>不过还是不要吝惜口水 喷我吧..<br><br>在javaeye被喷 只会使我进步  面试时候被喷 少的就是机会了</p>
<p> </p>
</div>
<p><br>楼主概括的挺全面的</p>
22 楼 geeksun 2009-12-13  
SSH优缺点:
优点:
struts: 相对于之前的框架turbine和直接使用servlet,使用配置文件减少了代码的编写量,提高了易用性,以及对url管理的一致性,增加了表单验证、formbean等特性,提高了程序的规范性。还有一个很重要的优点是稳定性高,经过多年的使用,相比于其他的控制层框架,对稳定性高要求高的话,用struts可以保证稳定性。
hibernate:相对于jdbc,以操作对象的方式去操作数据库,程序员可以不用考虑数据库的sql语句的具体形式,直接在对象上操作,对象在数据库上的操作,交给了hibernate API去转换执行。减少了代码量,减轻了程序的耦合度,与数据库无关。可以“一次编写,到处运行”。
spring:令人称赞的是IOC、AOP和数据库事务的自动管理,集成对各种其他框架的良好支持,配置过程中高度动态化,低耦合和低侵入性,在应用中起一个小型容器(contaioner)的作用,可以管理在容器中的框架、servlet、bean,管理他们的生命周期和内存分配,具“一站式架构”的特点。
缺点:
struts:action被设计成线程不安全的,配置文件众多、繁杂,代码和Servlet的耦合度比较高。
hibernate:因为使用了ORM映射,把对对象的操作转换成对数据库的操作,实际上还是转成了调用JDBC来操作数据库,比直接使用JDBC的效率低。再者就是hibernate的特性强大,如果不深入了解hibernate的特性,发挥不出hibernate的强大特性。使用好hibernate的前提是对数据库和sql的高度熟悉,否则也用不好hibernate.
spring:使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计。
21 楼 Angel_Night 2009-12-12  
withoutme_hw 写道
Hibernate还有一个缺点,面试官提示我说Hibernate有没有什么不能做到,而JDBC可以做到的?
Hibernate不能再运行时动态创建表,JDBC是可以做到的


http://www.iteye.com/topic/197752

不知道我是否理解对意思了

不过这个帖子好像也可以算动态创建了
20 楼 wanglz 2009-12-12  
Hibernate还有一个缺点,面试官提示我说Hibernate有没有什么不能做到,而JDBC可以做到的?
这个问题有什么具体答案?
19 楼 minzhendong 2009-12-12  
application.xml配置文档最难配置……

相关推荐

    ssh框架优缺点

    ### SSH框架优缺点详解 SSH框架,即Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级架构模式。本文将深入探讨SSH框架中的Struts、Spring、Hibernate各自的优缺点。 #### ...

    综合论述SSH的优缺点

    标题“综合论述SSH的优缺点”指的是对Secure Shell(SSH)协议的全面分析,包括它的优点和不足。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令,传输数据,以及在不安全的网络环境中提供加密通信。SSH...

    SSH框架的优缺点

    下面我们将深入探讨SSH框架的优缺点。 **一、Struts2** Struts2是基于MVC设计模式的Web应用框架,它继承了Struts1的优点并解决了其不足。其主要优点包括: 1. **灵活的拦截器机制**:Struts2使用拦截器来处理请求,...

    SSH架构优缺点分析.rar

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

    ssh框架的介绍以及优缺点

    ### SSH框架介绍及其优缺点 #### 一、SSH框架概述 SSH框架是Java Web开发领域中非常流行的一个组合,它由三个独立但又相互协作的部分组成:Struts、Spring 和 Hibernate。这三个技术分别解决了Web应用开发中的不同...

    ssh框架优缺点 struts hibernate spring

    ### SSH框架:Struts、Hibernate、Spring 的优缺点分析 #### Struts **优点:** 1. **MVC模式的支持**:Struts框架遵循MVC(Model-View-Controller)设计模式,它将应用程序分为模型层、视图层和控制器层,这样的...

    ssh架构优缺点(转)

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

    SSH(Spring Struts Hibernate)的优缺点

    让我们详细分析一下SSH的优缺点。 **Struts** Struts作为一个MVC框架,具有以下优点: 1. **MVC架构**:Struts通过分离业务逻辑、视图和控制逻辑,使应用结构清晰,易于维护和扩展。 2. **Taglib库**:Struts提供...

    整理的各种框架的优缺点

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

    Struts,Spring,Hibernate优缺点

    Struts、Spring 和 Hibernate 是Java Web开发中三大主流的开源框架,它们各自有着独特的功能和优缺点。在构建企业级应用程序时,理解这些框架的核心特性以及它们如何相互补充至关重要。 Struts 是一个基于MVC...

    三大框架优缺点

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

    FTP服务器优缺点分析.docx

    3. 可通过SSL、SSH2等协议进行加密,增强数据安全性。 4. 使用TCP/IP协议,确保数据准确传输。 5. 对于大文件,FTP传输速度通常比HTTP更快。 FTP服务器种类多样,如Windows系统自带的IIS FTP,功能强大的Serv-U,...

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

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

    框架的优缺点

    本篇文档主要探讨了三大主流框架——Struts1、Struts2和Spring的优缺点,尤其是对SSH(Struts、Spring、Hibernate)框架的理解。 首先,我们来看看Struts2的工作原理。Struts2的核心是FilterDispatcher,它通过一...

    SSH.rar_SSH框架简介_ssh

    下面我们将深入探讨SSH框架的各个方面,包括其优缺点。 **Struts2** 是一个基于MVC设计模式的Web应用框架,它通过简化MVC的实现来帮助开发者创建更结构化的应用程序。Struts2提供了丰富的拦截器和插件机制,使得...

    SSH框架详解

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

    SSH2文件上传

    这些协议各有优缺点,选择哪种取决于应用场景的安全性需求、速度和复杂性。 综上所述,SSH2文件上传是通过SSH2协议实现的远程文件传输,涉及连接建立、身份验证、SFTP会话开启、文件传输和验证等多个环节。在实际...

    ssh 框架整合总结

    包括assigned(外部生成)、hilo、seqhilo、increment、identity、sequence、native、uuid.hex、uuid.string和foreign等多种方式,每种都有其适用场景和优缺点。 在处理一对多或多对多关联时,Hibernate可能会出现N...

    strut spring hibernate 优缺点

    ### Struts, Spring, Hibernate 三大框架的优缺点分析 #### Struts框架 **优点:** 1. **组件模块化与灵活性:** Struts框架强调组件的模块化设计,这使得开发者可以根据项目的不同需求灵活地选择和组合这些组件。...

Global site tag (gtag.js) - Google Analytics