`
kidiaoer
  • 浏览: 824739 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ssh相关资料

阅读更多

ssh相关资料
Struts跟 Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的 了解其内部实现机制。 Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易。Struts框架为开放者提供了一 个统一的标准框架,通过使用Struts作为基础,开发者能够更专注于应用程序的商业逻辑。Struts框 架本身是使用Java Servlet和JavaServer Pages技术的一种Model-View-Controller(MVC)实现.
具体来讲,Struts的优点有:

    1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.

    2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国 内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

    3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的 维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

    4. 提供Exception处理机制 .

    5. 数据库链接池管理

    6. 支持I18N

    缺点:
    一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的 jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之 后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样, 几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。

    二、 Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了 线程安全的问题。

    三、 测试不方便. Struts的每个 Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难 实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。

    四、 类型的转换. Struts的 FormBean把所有的数据都作为String类型,它可以使用工具Commons- Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。

    五、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。

    六、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达 式语言在Collection和索引属性方面处理显得很弱。

    七、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重 新去写Servlet来实现你的这个功能需求。

    八、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies, 很难在action处理前和后进行操作。

    九、 对事件支持不够. 在struts中,实际是一个表单Form对应一个Action类(或 DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这 种事件方式称为application event[align=left][/align],application event和component event相比是一种粗粒度的事件。
  
    Struts重要的表单对象 ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是 Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时, 单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。

2. Hibernate
Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随 心所欲的使用对象编程思维来操纵数据库。
Hibernate 可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的 Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB 的J2EE架构中取代CMP,完成数据持久化的重 任。
大多数开发机构经常采取创建各自独立的数据持久层。一旦底层的数据结构发生改变,那么修改应用的其余部分使之适应这种改变的代价将是十分巨大的。Hibernate适 时的填补了这一空白,它为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框 架,功能却非常丰富。

优点:
a. Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
b. Hibernate 的性能非常好,因为它是个轻量级框架。 映射的灵活性很出色。
c. 它支持各种关系数据库,从一对一到多对多的各种复杂关系。


缺点:它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让人不安,尽管如此, Hibernate 还是以其强大的发展动力减轻了这些风险。其他的开源持久性框架也有一些,不过都没有 Hibernate 这样有市场冲击力。
[color=orange][/color][size=x-small][/size]

补充几点我的意见:

一、 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的 数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB 不是一个范畴的东西,也不存在非此即彼的关系。

二、 Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和 JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。

三、 Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为 JDBC的替代者出现的,而不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:

传统的架构:
1) Session Bean <-> Entity Bean <-> DB
为了解决性能障碍的替代架构:
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB

就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。

2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用 Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此 Hibernate架 构表现出最快的运行效率。EB的架构效率会差的很远。

3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之, Hibernate最差。 但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失 败。

4、分布式,安全检查,集群,负载均衡的支持
由于有SB做为Facade,3个架构没有区别。

四、EB和 Hibernate学习难度在哪里?

EB的难度在哪里?不在复杂的XML配置文件上,而在于EB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需 要学习App Server和EB的配置来优化EB的运行效率。做EB的开发工作,程序员的大部分精力都被放到了EB的性能问题上了,反而没有更多的精力关注本身就主要 投入精力去考虑的对象持久层的设计上来。

Hibernate 难在哪里?不在Hibernate本身的复杂,实际上Hibernate非 常的简单,难在Hibernate太灵活了。

当你用EB来实现持久层的时候,你会发现EB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好 坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。

Hibernate 相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那 个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可 以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用iterator,可以用list,哪个好,有什么区别?你为难 不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个 对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?

这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员, 那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EB,你第一秒种就已经做出了决 定,根本没得选择,比如说集合属性,你只能用Collection,如果是 Hibernate,你会在Bag,List和 Set之间来回犹豫不决,甚至搞不清楚的话,程序都没有办法写。

3. Spring
它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为 它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等
优点
a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或 其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。
b. Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系 统的可测试性和面向对象的程度。
c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾 经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你 仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。
d. 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。
e. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用 中的大多数业务对象没有依赖于Spring。
f. 使用Spring构建的应用程序易于单元测试。
g. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
h. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物, 它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据 库打交道,甚至不需要一个JTA实现。
i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。
Spring 确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的

分享到:
评论

相关推荐

    Java SSH 参考资料

    在"SSH参考资料"这个压缩包中,可能包含了Spring、Struts和Hibernate的官方文档、教程、示例代码、常见问题解答等资源,这些都是学习和掌握Java SSH技术栈的重要资料。通过深入学习和实践,开发者可以有效地提高Java...

    丰富的SSH整合参考资料

    下面将详细介绍SSH整合的相关知识点。 1. **SSH基础知识**: - SSH的工作原理:SSH通过加密通信通道来确保数据传输的安全性,它使用公钥/私钥对进行身份验证,以防止中间人攻击。 - SSH的主要用途:远程登录、...

    搜集的一些SSH资料

    “源码”标签可能意味着压缩包内包含了SSH相关项目的源代码,可能是实现SSH连接的库、框架或示例项目。“工具”标签则可能指示这里包含了一些辅助工具,例如SSH客户端、配置助手等。 根据提供的文件名“spring2_5_2...

    ssh整合学习资料

    SSH整合是Java开发中一种常见的技术栈组合,主要包括Spring、Hibernate和Struts2这三个框架的集成应用。这三种框架在企业级应用开发中扮演着重要角色,分别负责不同层面的问题解决。 Spring是一个全面的后端应用...

    SSH协议相关资料和软件

    这个压缩包“SSH协议相关资料和软件”显然包含了一些关于SSH协议的学习资源和可能的实施工具,比如`setupssh.exe`,这很可能是一个SSH客户端或服务器的安装程序。下面将详细讨论SSH协议及其相关知识。 SSH协议最初...

    ssh整合资料

    接下来,我们将深入探讨SSH整合的相关知识点。 首先,**Spring** 是一个全面的Java应用程序框架,它提供依赖注入(DI)和面向切面编程(AOP)等功能,用于简化应用的开发和管理。在SSH整合中,Spring作为核心容器,...

    ssh2相关资料

    以下是SSH2相关的一些关键知识点: 1. 安全性:SSH2使用公钥基础设施(PKI)进行身份验证,增强了安全性。用户或服务器通过私钥进行身份验证,公钥被存储在服务器上,确保只有拥有相应私钥的用户能够访问系统。此外...

    ssh 相关学习资料

    ### SSH相关学习资料详解 #### 一、SSH简介与重要性 **SSH(Secure Shell)**是一种网络协议,主要用于加密客户端与服务器之间的网络通信。它为远程登录、远程文件管理等服务提供了安全的通道,是现代互联网应用中...

    SSH资料文档

    SSH相关资料文档

    SSH框架相关技术资料专题

    资源名称:SSH框架相关技术资料专题资源目录:【】19061a0ebe09aa9a85cc5725afbd6286【】chap01领略清晰的MVC流程----Struts讲解技术资料【】chap02体验控制反转的理念----Spring介绍技术文档【】chap03感悟...

    ssh开发用的工具包全面的SSH资料库

    这些jar包包括了Struts的核心库、Spring的各种模块(如Core、Context、Web、AOP、ORM等)以及Hibernate的主库和相关驱动。有了这些jar包,开发者可以快速搭建SSH环境,开始构建复杂的业务逻辑和数据访问层。 在实际...

    ssh2 jar包及学习资料

    SSH2 jar包的学习资料可能包含教程、示例代码、API文档等,可以帮助开发者更好地理解和运用SSH2进行远程命令操作。在学习过程中,结合实际项目实践,理解每个步骤的含义和作用,将有助于提升技能水平。

    ssh.zip_java ssh_ssh

    在文件名列表中只有一个"ssh",这可能是一个包含所有SSH相关文件的主目录,里面可能有Java源代码、配置文件、日志、教程文档等。深入研究这些文件,我们可以学习如何在Java项目中设置SSH连接,包括生成公钥/私钥对、...

    JAVA+很好的ssh例子,是开始学习的示范性项目javalearnsa资料分享

    在IT行业中,SSH通常指的是Spring、Struts和Hibernate这三个开源框架的组合,它们是Java Web开发中的重要组件。本项目“JAVA+很好的ssh例子”是一个针对初学者的示范性项目,旨在帮助Java开发者理解并掌握SSH框架的...

    SSH.rar_myeclipse ssh_ssh_ssh myeclipse_ssh2_ssh2 Myeclipse

    标题"SSH.rar_myeclipse ssh_ssh_ssh myeclipse_ssh2_ssh2 Myeclipse"表明这是一个关于SSH配置和MyEclipse集成的资源包,可能包含了SSH框架在MyEclipse中的配置教程,以及SSH2(更安全的SSH版本)的相关资料。...

    ssh2框架练习项目及代码

    "BBS.pdf"可能是相关的教程或参考文档,详细讲解了如何构建一个基于SSH2的论坛系统,涵盖了从设计模型、实现业务逻辑到部署上线的全过程。 通过深入研究这些资料,你可以掌握SSH2框架的基本用法,了解如何在实际...

    SSH开发所需所有驱动包

    总的来说,"SSH开发所需所有驱动包"是一个全面支持SSH框架开发的资源集合,它涵盖了从数据库连接、对象持久化到Web层控制的各个层面,是Java后端开发的重要参考资料。在实际开发过程中,根据项目需求选择合适的驱动...

    ssh框架整合资料, 如何搭建struts+spring+hibernate文档资料

    本资料旨在指导开发者如何有效地将这三个框架整合起来,构建出一个高效、可维护的Web应用程序。 **Struts** 是一个基于MVC(Model-View-Controller)设计模式的Java Servlet框架,主要处理HTTP请求,并将其转发到...

    SSH框架相关技术资源列表

    很多好用的资源搜藏 SSH框架相关技术资源列表

    MyEclipse 整合的ssh2框架

    对于压缩包文件"Java_SSH2_0003",可能包含了一些示例代码或者教程资料,可以帮助初学者更好地理解和实践SSH2整合到MyEclipse的过程。具体的内容可能包括了SSH2连接的示例类、配置文件、以及如何在MyEclipse中运行和...

Global site tag (gtag.js) - Google Analytics