Struts2核心工作流程
来源:互联网 发布:日本旅游花费 知乎 编辑:程序博客网 时间:2024/06/05 05:00
一.Struts2是什么?
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.
二.常见WEB层框架
Struts2
Struts1
Webwork
SpringMVC
三.使用Struts2的优点
1.提高效率
2.struts2框架将web中很多功能都封装了,我们之前很多需要自己来完成的事情,struts2就帮我们代劳了.
3.优秀的架构,可扩展性,aop,mvc思想
四.Struts2能做什么?
1.处理乱码
2.接受参数
3.转发|重定向(常用)
4.校验
5.异常处理机制
6.标签
五.struts2与struts1
struts1和struts2 架构是不同的.甚至可以说是完全不同的框架.
struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
六.搭建Struts2框架
1.官网下载Struts2开发包
https://struts.apache.org/ (好像最近访问不了)
2.解压后的目录结构
apps:该文件夹用于存放官方提供的Struts2示例程序,这些程序可以作为学习者的学习资料,可以提供很好的参照.各示例都为war文件,可以通过zip方式进行解压.
docs:该文件夹用于存放官方提供的Struts2文档,包括Struts2的快速入门,Struts2的文档,以及API文档等内容.
lib:该文件夹用于存放身Struts2的核心类库,以及Struts2的第三方插件类库.
src:该文件夹用于存放该版本Struts2框架对应的源代码.
3.创建一个web工程引入相关的jar包
可以使用apps中的例子中的jar包
4.书写Action类
5.配置struts2主配置文件
6.配置过滤器
7.访问测试
七.Struts2架构
上面绿色部分属于开发人员需要自己书写的代码部分.
简单介绍Struts2架构图的工作流程:
1、客户端初始化一个指向Servlet容器(例如Tomcat,如:http:localhost:8080/struts2/hello.action)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件(struts.xml),找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。
FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。
八.Struts2配置文件加载顺序
对应产生文件依次如下:
init_DefaultProperties(); // [1]---- org/apache/struts2/default.propertiesinit_TraditionalXmlConfigurations(); // [2] --- struts-default.xml,struts-plugin.xml,struts.xmlinit_LegacyStrutsProperties(); // [3] --- 自定义struts.propertiesinit_CustomConfigurationProviders(); // [5] ----- 自定义配置提供init_FilterInitParameters() ; // [6] ----- web.xmlinit_AliasStandardObjects() ; // [7] ---- Bean加载
- Struts2核心工作流程
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- Struts2框架核心工作流程与原理
- struts2核心工作流程与原理
- struts2核心工作流程与原理
- android.view.InflateException: Binary XML file line #6: Error inflating class com.marshalchen.ultima
- STM32 CAN 通信 滤波设置问题
- NDK编译FFmpeg库(windows下Eclipse )
- IntelliJ IDEA---和JBOSS的结合
- Atitit 外包管理规范attilax总结
- Struts2核心工作流程
- XX-Net项目,免费浏览谷歌的伟大项目
- 17 - 01 - 21 计算机网络(11)(地址解析协议)
- Remove Element
- document.body.scrollTop用法
- Java多线程——线程管理
- 安装hadoop集群
- 模拟登陆开心网
- Java同样的汉字在服务器和本地的电脑上URLencode 出来的结果不一致