1.Struts:
MVC框架:
Model(M): ActionForm, 每个表单的数据都组成一个ActionForm的对象, ActionForm就是Struts中的Model,不过它只能算是请求级别的Model,因为真正的Model是数据库。
View(V): JSP, 一个个JSP页面,Struts里面提供了丰富的标签库方便界面的开发, 如:struts-logic, struts-bean, struts-html, struts-nested, struts-tile.
Controller(C): Struts-config.xml, 这个配置文件是Controller,它控制一个Action进来,被forward到哪里去,由谁来处理。
常见的标签有:
Struts-html几乎与html标签对应.
Struts-logic:
messagesPresent, empty, equal, lessThan, lessEqual, match, forward, redirect.
Struts-bean:
Bean:message:以key的方式到资源文件中找到一个字符串替换相应位置。
特 征 | Struts1.1 | WebWork2 |
Action类 | 在Struts里面,每一个Action类必需要继承一个抽象的类org.apache.struts.action.Action。这个在Java编程中会引来一些问题,就是关于多种继承的问题。 | WebWork的Action类仅需要实现接口com.opensymphony.xwork.Action,也可以实现其它的接口来实现更多的功能,譬如:validate(验证),localware(国际化)等。当然,它也提供了一个类ActionSupport集成了上面的所有功能,我们在开发中可以根据需要选择。 |
线程模型 | Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。 | 在WebWork中,每个请求对应一个Action,因此没有线程的安全问题。实际上Servlet容器对每个请求也产生多个对象,它也没有证明对性能和垃圾回收产生太多的影响。 |
Servlet的依赖 | Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。 | WebWork的Action不用依赖Web层和其它的容器。它可以通过ActionContext,直接去访问Request和Response,但这个是可选的,只有在必需的请求下使用。 |
测试 | Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。 | Webwork的action能够通过赋予一定的属性,就可以执行单元测试。同时也可以使用一个mock的实例去测试,而不是通过启动web容器来进行测试。 |
FormBean | Struts要求有FormBean对应每一个表单,而且FormBean必需继承抽象类ActionForm。而使用DynaBeans实际上没有太大的意义。不能够很好的处理现有的模型。 | Webwork 能够动态的收集web的数据然后再赋值给bean。它也可以使用FormBean的形式,FormBean可以是普通的DTO和域对象,它不用重新根据域对象来生成新的FormBean,也不需继承抽象类ActionForm。 |
前端表达式语言 | Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。 | WebWork的表达式语言使用了功能强大的OGNL。它使用OGNL建立一个OgnlValueStack来搜索数据。Webwork前端也可以使用JSTL,但它同时支持:velocity、freemaker、jspparer、xml。 |
类型的转换 | Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。 | WebWork使用OGNL进行类型转化,提供了所有基本类型的转化功能。类型转化可以直接对一个Class进行(Class级别)转化,也可以对Class的字段进行类型转化。它使用拦截器可以很容易的将类型转化的错误信息返回给用户,而且错误信息可以对应到一个相应的字段。 |
对Action 执行前和后的处理 | Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。 | Webwork2 允许您处理Action可以通过拦截器,就是在每一个Action处理前或者后进行其它操作。它的拦截器可以在配置文件中动态添加,这样Action和拦截器之间完全解藕,更好的实现了组件化。 |
验证处理 | Struts的验证是调用FormBean的validator()方法,其实就是对FormBean的验证。它一般使用框架Commons Validation进行数据验证处理。它使用了一个全局的配置文件validation.xml定义了FormBean的验证信息。Struts的FormBean属性都被认为是String类型,所以它在验证时也需要额外的类型转化。 | WebWork使用Xwork的验证框架进行验证处理,它可以通过配置拦截器来激活。它可以为每个需要验证的Class指定一个xml验证文件,也可以为一个Class在不同的情况指定不同的xml验证文件。WebWork证可以给每个Action类指定对应的验证文件,也可以给Action的字段去指定验证文件。通过拦截器来组装Action和其验证文件,使它们之间完全解藕。 |
对Action执行的控制 | Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。 | 在这个方面,WebWork的拦截器栈提供了强大的功能。Action的所有切面功能都有拦截器来实现(比如:取得request请求参数、验证处理等),这样你就可以用拦截器栈来组织拦截器的执行顺序。例如:你需要在使用request请求参数来设置Action属性之前,使用IoC框架设置Action的属性,反之已然。这时,你就可以为package或Action指定一个拦截器栈来实现。 |
2.Spring:
Inversion of Control(IOC), Dependency Injection(DI)框架. 它使类之间的调用关系由配置文件来确定而不在代码中限定死。
不使用DI代码示例:
// 不使用DI.
public class A ...{
private B b;
public void demo() ...{
// BSon是b的一个子类
b = new BSon();
b.work();
}
}
使用DI代码示例:
// 使用DI
Public class A ...{
Private B b;
Public void demo() ...{
// 你在使用b之前没有初始化这个对象因为spring帮你设置好。
b.work();
}
}
Spring配置文件:
<bean name="b"
class="BSon"
singleton="false">
</bean>
<bean name="b1"
class="BSon1"
singleton="false">
</bean>
<bean name="a"
class="A"
singleton="false">
<property name="b">
<ref bean="b" />
</property>
</bean>
Spring中常见的一些bean:
dataSource, 一般是org.apache.commons.dbcp.BasicDataSource的对象。
sessionFactory,
一般是org.springframework.orm.hibernate3.LocalSessionFactoryBean的一个对象。
transactionManager,
一般是org.springframework.orm.hibernate3.HibernateTransactionManager的对象。
3.Hibernate
ORM映射工具
分享到:
相关推荐
Struts Hibernate Spring Ajax Struts Hibernate Spring Ajax
struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页
Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatisStruts2 Spring Hibernate IBatisStruts2 Spring Hibernate IBatis 只需要导入相应的jar包就行了 ,数据库是mysql :数据库名叫做mydatabase,表名...
《Spring+Struts+Hibernate整合开发》是一本深入讲解企业级Java应用开发的书籍,它主要聚焦于三大著名开源框架——Spring、Struts和Hibernate的集成与应用。这些框架是Java Web开发中的基石,广泛应用于各种复杂的...
《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、Struts和Hibernate。该系统利用MySQL作为数据库存储数据,提供了完整的数据库备份,确保了数据的安全性与...
struts spring hibernate 帮助文档 chm struts spring hibernate 帮助文档 chm struts spring hibernate 帮助文档 chm struts spring hibernate 帮助文档 chm
在本章中,我们将深入探讨如何开发一个基于Struts、Spring、Hibernate和Ajax的网上信息发布平台。这四个技术是Java Web开发中的核心组件,它们各自承担着不同的职责,共同构建了一个强大而灵活的后端架构。 **...
Struts、Spring 和 Hibernate 是三个著名的 Java 开发框架,它们分别负责不同的职责。Struts 是一个 MVC(Model-View-Controller)框架,主要用于构建 web 应用的控制层,简化了Servlet和JSP的开发。Spring 是一个...
struts spring hibernate整合(二) struts spring hibernate整合(二)struts spring hibernate整合(二)
struts spring hibernate整合(三) struts spring hibernate整合(三) struts spring hibernate整合(三)
Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax
SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...
struts spring hibernate 登陆 SSH整合登陆功能struts spring hibernate 登陆 SSH整合登陆功能struts spring hibernate 登陆 SSH整合登陆功能
一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流
Struts、Spring和Hibernate是Java开发中的三大框架,它们分别负责MVC模式的视图、控制和持久化层。这篇文章将介绍如何将这三个框架整合在一起,以实现一个基础的用户登录和注册功能,并且自定义了一个显示所有用户...
对 struts spring hibernate 的整合 自己整理
Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate(一步一步的教你敲代码)(博客园,博客名称:Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate)
Struts2、Spring和Hibernate是Java开发中三大主流的开源框架,它们分别专注于Web层、业务层和服务层的管理,组合使用可以构建出强大的企业级应用。这些框架的jar包是开发人员日常工作中必不可少的工具。 **Struts2*...
标题与描述:“Struts Spring Hibernate 整合教程” 在IT领域,尤其是Java开发社区中,Struts、Spring和Hibernate是三个极为重要的框架,它们各自在Web应用开发、业务逻辑管理和数据持久化方面扮演着核心角色。当这...
Spring、Hibernate和Struts是Java开发中非常重要的三个框架,它们构成了经典的MVC(Model-View-Controller)架构,被广泛应用于企业级Web应用开发。这些框架极大地简化了开发过程,提高了开发效率,并且提供了良好的...