java多线程面试题及答案_简述struts2工作原理

java多线程面试题及答案_简述struts2工作原理众所周知,Struts2是Struts和WebWork的混血儿,而在Webwork2.2之前的Webwork版本,其自身有一套IoC实现,在Spring框架如火如荼发展的背景下,Webwork决定放弃控制反转功能的开发

       众所周知,Struts 2是Struts和WebWork的混血儿, 而在Webwork 2.2之前的Webwork版本,其自身有一套IoC实现,在Spring 框架如火如荼发展的背景下,Webwork决定放弃控制反转功能的开发,转由使用Spring的实现。有越来越多的开源组件(如iBATIS等)都放弃与Spring重叠功能的开发,因此,Struts 2推荐大家通过Spring实现IoC功能。
Struts 2 拥有众多的新特性,下面我们对此进行概括性的描述:

 

1 ·Action类更加灵活

Struts 2的Action类可以实现一个Action接口,也可实现其他接口,因此很容易添加定制性的服务。Struts 2提供一个ActionSupport,它是实现了Struts常用接口的方便类。Action接口不是必需的,任何具有execute签名的POJO都可以用作Struts 2的Action对象。

 

2 ·每一请求对应一个Action实例

Struts 1的Action以单例模式运行,所有的请求对应同一个Action实例。因此用户必须保证Action本身是线程安全的。Struts 2 的Action对象为每一个请求产生一个实例,因此没有线程安全问题,它相当于Spring MVC的ThrowawayController。

 

3 ·不依赖于Servlet 容器

Struts 1 Action 依赖于Servlet 容器,但Struts 2 Action不依赖于Servlet容器,允许Action脱离容器单独测试。如果需要,Struts2的Action仍然可以访问到request和response实例。

 

4 ·具有很强的可测试性

由于Struts 1依赖于Servlet容器,所以很难脱离容器进行测试,虽然可以通过StrutsTestCase使用模拟对象进行测试,但操作依旧比较麻烦。Struts 2的Action不依赖于Servlet容器,用户可以简单地通过初始化、设置属性、调用方法进行测试,同时“依赖注入”的支持也使测试更加容易。

 

5 ·捕获输入更加灵活

Struts 1使用ActionForm对象捕获输入,所有的ActionForm必须继承一个基类。Struts 2直接使用Action属性绑定请求参数,消除了对第二个输入对象的需求。这种模型驱动的特性简化了页面标签对POJO输入对象的引用。

 

6 ·表达式语言更强大

Struts1整合了JSTL,因此可以使用JSTL EL。这种EL有基本对象图遍历的功能,但是对集合和索引属性的支持很弱。Struts2依旧可以使用JSTL,但是也支持一个更强大和灵活的对象属性引用语言——“Object Graph Notation Language(OGNL)”。

 

7 ·实现值和页面的灵活绑定

Struts 1使用标准JSP机制把对象绑定到页面中进行访问。Struts 2使用“值堆栈”技术,使标签能够访问值而不需要把页面和对象绑定起来。“值堆栈”策略允许通过一系列名称相同但类型不同的属性重用页面。

 

8 ·类型转换更加方便

Struts 1 的ActionForm属性通常都是String类型,Struts1使用Commons-Beanutils进行类型转换。每个类对应一个转换器,对每一个实例来说是不可配置的。Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。

 

9 ·数据校验更加方便

Struts 1支持在ActionForm的validate()方法中进行校验,或者通过Commons Validator的扩展进行校验。同一个类可以有不同的校验内容,但不能校验子对象。Struts2支持通过validate()方法和XWork校验框架来进行校验。

 

10 ·Action的生命周期更加灵活

Struts1支持每一个模块有单独的生命周期,但是模块中的所有Action必须共享相同的生命周期。Struts 2支持通过拦截器堆栈为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

 

摘自:http://www.javaweb.cc/architecture/spring/26881.shtml

 

今天的文章
java多线程面试题及答案_简述struts2工作原理分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89822.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注