码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2原码分析系列之一

时间:2016-09-01 23:10:19      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

struts2概述

  在struts2的官网上有这么一句话,翻译为:Apache Struts2是一个为企业级应用打造的优秀的、可扩展的WEB框架,该框架旨在充分精简应用程序的开发周期,从而减少创建、发布直到应用所花费的时间。

Apache Struts2原本就是举世闻名的Webwork2,在各自经历几年的发展之后,Struts和Webwork社区决定合二为一,也就是今天的Struts2.

Struts是一个基于Model2的MVC框架,为应用程序的WEB层提供了良好的结构严谨实现,Struts发展较早,早期的Struts1为很过将ee程序员所熟悉,经过多年的发展,这支队伍越来越大,很多企业级应用都是基于Struts开发的。

所以,struts1和struts2已经不能放在一起比较,虽然都是MVC框架的经典实现,本质却完全不同,Struts2的前身是webwork,其实现方式和功能优于struts1.x,但是struts先入为主,很多程序都是基于struts,其生命力和普及度使得Webwork落于下风,随着新思想和新架构的不断涌入,特别是WEB2.0被大量普及,使得struts1.x显然无法跟上日新月异的变化,在很多应用上显得力不从心,最终导致struts2的产生。

Struts2的2.0特征

Action类:

1、Struts1要求Action类继承一个抽象基类,Struts1的一个普遍问题就是使用抽象基类而不是结构

2、Struts2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能,Struts2提供一个ActionSupport基类去实现常用接口,Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程模式

1、Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的实例来处理所有的请求,单例策略限制了Struts1 Action能做的事,并且要在开发时特别小心,Action资源必须是线程安全的或同步的。

2、Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

Servlet依赖:

1、struts1 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest,HttpServletResponse被传递给execute方法

2、struts2 Action不依赖于容器,允许Action脱离容器单独被测试,如果需要,Struts2Action任然可以访问初始的request和response,但是,减少了其他元素直接访问HttpservletRequest,HttpServletResponse的必要性

可测性:

1、测试Struts1 Action的一个主要问题是execute方法暴露了Servlet ApI(这使得测试要依赖于容器)。

2、Struts2 Action可以通过初始化,设置属性,调用方法来测试,依赖注入支持也使得测试更容易。

捕获输入:

1、Struts1 使用ActionForm对象捕获输入,所有的ActionForm都必须继承一个基类ActionForm,因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入,虽然动态的Bean

Struts2原码分析系列之一

标签:

原文地址:http://www.cnblogs.com/yw-ah/p/5831593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!