struts2简介
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts 2是在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,webwork的核心是XWork。
struts2的优点
- 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实
- Struts2提供丰富的拦截器实现。
- 强大的表达式语言(OGNL – the Object Graph Navigation Language)。
- 丰富的标签库,大大提高了开发的效率。
- 通过配置文件,就可以掌握整个系统各个部分之间的关系。
- 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。
- Struts2的可扩展性高。
- 面向切面编程的思想在Strut2中也有了很好的体现,最重要的体现就是拦截器的使用。
另外,struts2相对比于spring mvc,Struts2对于Controller最大的改造有两点:
- 在Controller中彻底杜绝引入HttpServletRequest或者HttpServletResponse这样的原生Servlet对象。
- 将请求参数和响应数据都从响应方法中剥离到了Controller中的属性变量。
这两大改造被看作是框架的神来之笔。因为通过这一改造,整个Controller类彻底与Web容器解耦,可以方便地进行单元测试。
struts2工作原理
Suruts2的工作原理可以用下面这张图来描述,下面我们分步骤介绍一下每一步的核心内容,需要说明的是,struts2在2.1.3版本之后,FilterDispatcher核心控制器变成了StrutsPrepareAndExecuteFilter。
一个请求在Struts2框架中的处理大概分为以下几个步骤:
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 。
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 。
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取。
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦action执行完毕,ActionInvocation负责根据struts.xml的配置找到相应的返回对应的返回结果,这个结果是一个需要被表示的JSP。
【注】:详细步骤说明见http://www.cnblogs.com/zzfweb/archive/2016/05/23/5521217.html
Struts2开发流程
以Struts2输出最经典的“HelloWorld”为例:
- 新建web项目
- 为项目添加Struts2的类库
- 配置web.xml文件,在其中添加过滤器
- 编写jsp界面
- 编写Action
- 配置struts.xml文件
【注】:详细开发流程见http://www.2cto.com/kf/201402/278562.html