text: 框架struts1和struts2的详细区别有哪些？
  问题简单点，就是几个方面：
      1 Action类：Struts1 继承一个抽象基类，Struts2就自由点，只要有 execut方法的Pojo对象就能当action使用，当然也可以继承一些接口和基类。
      2线程：Struts1 action是单例模式而且必须是线程安全的。Struts2 action为每一个请求产生一个实例，所以没有线程安全问题。
      3 依赖：Struts1 Action依赖servletAPI，Struts2不依赖，因为Struts2 的Action就是一个普通的java类。
     4 封装请求：Struts1用扩展ActonForm的类来捕获页面请求参数，ActonFrom是纯粹的Vojo，这使开发者往往还要自行创建一个javaBean来封装这些参数用来作为持久或其它用途，重复的描述一个内容。Struts2可以在Acton里设置相应的属性，也可以支持ActionForm这种模式，用模型驱动（ModelDriven）的特性简化了标签对POJO输入对象的引用。
     5 表达式语言：Struts1 整合了jstl，Struts2不仅可以使用jstl，还整合了OGNL，因此表达式语言功能更强大。
     6 传值到视图：Struts1使用标准jsp机制绑定对象到页面上下文，Struts2使用ValueStack技术，访问更灵活。
     7 类型转换：Struts1 使用Commons-Beanutils进行类型转换，转换每一个类，而不能为每一个实例配置。 Struts2使用ONGL进行类型转换，支持基本数据类型和常用对象之间的转换。
     8数据校验：Struts1支持ActionForm重写validate手动校验，或通过CommonsValidator扩展校验，同一个类可以有不同的校验内容，但不能校验子对象。Struts2 支持重写validate，也支持XWork校验框架进行校验。
    9 Action执行控制： Struts1支持每一个模块有单独的生命周期，但是模块中所有的Action必须享有相同的生命周期。 Struts2 支持拦截器栈为每一个Action创建不同的生命周期。