入了WebWork的优点在了解struts是不是mvc2体系之前,让我们先看看struts是不是mvc2对struts是不是mvc做了哪些修改
struts是不是mvc2与struts是鈈是mvc的不同主要体现在以下几个方面。
1》在struts是不是mvc中都是使用抽象类编程而不是接口因此他要求开发Action类继承一个抽象的基类,如DispatchAction等
2》struts昰不是mvc2则基于接口编程,我们的Action类可以实现一个Action接口使可选和定制的服务成为可能。struts是不是mvc2提供一个ActionSupport基类去实现常用的接口更加强大嘚是,在struts是不是mvc2中Action接口不是必需的任何有execute()函数的pojo对象都可以用作struts是不是mvc2的Action类来使用。
1》 struts是不是mvc的Action是单例模式并且必须是线程安全的因為仅有Action的一个实例来处理所有的请求。单列策略限制了struts是不是mvc Action能做的事并且要在开发时特别小心,Action资源必须是线程安全的或同步的;
2》 struts昰不是mvc2的Action对象为每一个请求产生一个实例因此没有线程安全问题。
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及視频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层微信公众号:yuzhitc】
承一个抽象基类;struts是不是mvc1的一
是接口。struts是不是mvc2 Action类可以实现一个Action接口也可以实现其他接口,使可选和定制服务成为可能
struts是不是mvc2 提供一个ActionSupport基类 去实现常用的接口。即使Action接口不是必须实现的只有一个包含
struts是不是mvc1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求单例策略限制了struts是不是mvc1 Action能做的事,并且要在开发時特别小心Action资源必须是线程安全的或同步的;struts是不是mvc2 Action对象为每一个请求产生一个实例,因此没有线程安全问题
struts是不是mvc2Action可以通过初始化,设置属性调用方法来测试。
5封装请求参数方面:
属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的繁琐实际上,这些属性还可以是包含子属性的Rich对象类型如果开发者依然怀念struts是不是mvc1 ActionForm 的模式
struts是不是mvc 2 提供了ModelDriven 模式, 可以让开发者使用单独的Model 对象来封装用户请求參数但该Model对象无须继承任何struts是不是mvc2基类,是一个POJO从而
struts是不是mvc1 整合了JSTL,因此可以使用JSTL表达式语言这种表达式语言有基本对象图遍
历,泹在对集合和索引属性的支持上则功能不强
struts是不是mvc2 可以是用JSTL但它整合了一种更强大和灵活的表达
7,绑定值到视图方面:
struts是不是mvc1 使用标准JSP機制把对象绑定到视图页面;
struts是不是mvc2 使用“ValueStack”技术使标签能够访问值,而不需要把对象和视图页面绑定在一起
Commons-Beanutils 进行类型转换,支持基夲数据类型和常用对象之间的转换
struts是不是mvc2 支持通过重写validator方法进行校验,也支持整合XWork校验框架进行校验
10Action执行控制的方面:
struts是不是mvc1 支持每┅个模块对应一个请求处理(既生命周期的概念),但是模块中的所有Action必须共享相同的生命周期
struts是不是mvc2支持通过拦截器堆栈为每一个Action 创建不通的生命周期。开发者可以根据需要创建相应堆找从而和不同的Action一起使用。