Java框架中Struts和Struts2框架的区别

struts1struts2的区别:

1.都是 MVC 的 WEB 框架,

2 struts1的老牌框架,应用很广泛,有很好的群众基础,使用它开发风险很小,成本更低!

struts2虽然基于这个框架,但是应用群众并多,相对不成熟,未知的风险和变化很多,开发

人员相对不好招,使用它开发项目的风险系数更大,用人成本更高!

3.struts2毕竟是站在前辈的基础设计出来,它会改善和完善 struts1中的一些缺陷, struts1

中一些悬而未决问题在 struts2得到了解决。

4.struts1的前端控制器是一个 Servlet,名称为 ActionServlet, struts2的前端控制器是一个

filter,在 struts2.0中叫 FilterDispatcher,在 struts2.1中叫 StrutsPrepareAndExecuteFilter。

5.struts1的 action 需要继承 Action 类, struts2的 action 可以不继承任何类; struts1对同一

个路径的所有请求共享一个 Action 实例, struts2对同一个路径的每个请求分别使用一个独

立 Action 实例对象,所有对于 struts2的 Action 不用考虑线程安全问题。

6.在 struts1中使用 formbean 封装请求参数,在 struts2中直接使用 action 的属性来封装请

求参数。

7.struts1中的多个业务方法放在一个 Action 中时(即继承 DispatchAction 时),要么都校验,

要么都不校验;对于 struts2,可以指定只对某个方法进行校验,当一个 Action 继承了

ActionSupport 且在这个类中只编写了 validateXxx()方法,那么则只对 Xxx()方法进行校验。

(一个请求来了的执行流程进行分析, struts2是自动支持分模块开发,并可以不同模块设置

不同的 url 前缀,这是通过 package 的 namespace 来实现的; struts2是支持多种类型的视

图; struts2的视图地址可以是动态的,即视图的名称是支持变量方式的,举例,论坛发帖失

败后回来还要传递 boardid。视图内容显示方面:它的标签用 ognl,要 el 强大很多,在国际

化方面支持分模块管理,两个模块用到同样的 key,对应不同的消息;)

与 Struts1不同, Struts2对用户的每一次请求都会创建一个 Action,所以 Struts2中的 Action

是线程安全的。

给我印象最深刻的是: struts 配置文件中的 redirect 视图的 url 不能接受参数,而 struts2配

置文件中的 redirect 视图可以接受参数。