输入。所有的 ActionForm 必须继承一个基 类。因为其他 JavaBean 不能用作 ActionForm,开发者经 常创建多余的类捕获 输入。动态 Bean(DynaBeans)可以作为创建传统 ActionForm 的选择,但是, 开发者可能是在重新描述(创建)已经存 在的 JavaBean(仍然会导致有冗余的 javabean)。 Struts 2 直接使用 Action 属性作为输入属性,消除了对第二个输入对象的需 求。 输入属性可能是有自己(子)属性的 rich 对象类型。 Action 属性能够通过
web 页面上的 taglibs 访问。Struts2 也支持 ActionForm 模式。rich 对象类型,包 括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了 taglib 对 POJO 输入对象的引用。 表达式语言: Struts1 整合了 JSTL,因此使用 JSTL EL。这种 EL 有基本对象图遍历,但是 对集合和索引属性的支持很弱。 Struts2 可以使用 JSTL,但是也支持一个更强大和灵活的表达式语言-- "Object Graph Notation Language" (OGNL). 绑定值到页面(view): Struts 1 使用标准 JSP 机制把对象绑定到页面中来访问。 Struts 2 使用 "ValueStack"技术,使 taglib 能够访问值而不需要把你的页 面(view)和对象绑定起来。ValueStack 策略允许通过一系列名称相同但类型 不同的属性重用页面(view)。 类型转换: Struts 1 ActionForm 属性通常都是 String 类型。Struts1 使用 Commons-Beanutils 进行类型转换。每个类一个转换器,对每一个实例来说是不 可配置的。 Struts2 使用 OGNL 进行类型转换。提供基本和
常用对象的转换器。 校验: Struts 1 支持在 ActionForm 的 validate 方法中手动校验,或者通过 Commons Validator 的扩展来校验。 同一个类可以有不同的校验内容, 但不能校验子对象。 Struts2 支持通过 validate 方法和 XWor
k 校验框架来进行校验。XWork 校验框 架使用为属性类类型定义的校验和内容校验,来支持 chain 校验子属性
Action 执行的控制: Struts1 支持每一个模块有单独的 Request Processors(生命周期),但是模 块中的所有 Action 必须共享相同的生命周期。 Struts2 支持通过拦截器堆栈(Interceptor Stacks)为每一个 Action 创建 不同的生命周期。堆栈能够根据需要和不同的 Action 一起使用。
14:05 浏览 (41) 评论 (0) 分类: JAVA_J2EE
2009-09-21 缩略显示
java 动态代理
1.简单接口 public interface Subject{ Public void request(); }
2.被代理角色类 public class RealSubject implements Subject{ public RealSubject(){} public void request(){ System.out.println("Hello World"); } }
3.代理角色类 public class ProxySubject implements InvocationHandler{ // 必须实现 invocationHandle 接口,因此就需要实现 invoke 接口方法 private Object sub; public ProxySubject (){}
public ProxySubject (Object obj){ this.sub = obj; } public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{ method.invoke(sub,args); return null; } }
4.客户端调用类 public class Client{ public static void main(String srgs[]){ RealSubject rs = new RealSubject(); InvocantionHandle ds = new ProxySubject(rs); 性 Class cls = rs.getClass();
// JAVA 多态
Subject subject = (Subject) Proxy.newProxyInstance(cls.getClasssLoader,cls.getInterfaces(),ds); subject.request(); } }
23:09 浏览 (35) 评论 (0) 分类: JAVA_J2EE
2009-08-28 缩略显示
Struts2 中使用 FreeMarker 充当表现层
FreeMarker 是一个非常优秀的模板引擎,这个模板引擎可用于任何场 景,FreeMarker 负责将数据模型中的数据合并到模板中,从而生成标准输出.界 面开发人员只需要关于界面(也就是模板文件)的开发,而业务逻辑开发者只需要 负责将需要显示的数据填入数据模型-----FreeMarker 负责合并数据模型和模
板,从而生成标准输