新手学Struts(二)----Struts2工作机制

简介: <div class="markdown_views"><p>    <font size="3">Struts2的体系结构如图所示:</font></p><p><img src="http://img.blog.csdn.net/20160430140531435" alt="这里写图片描述" title=""></p><p>    <font size="3">从

    Struts2的体系结构如图所示:

这里写图片描述

    从上图可以看出,一个请求在Struts2框架中的处理大概分为以下几个步骤:

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助;)

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例;

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用;

8、一旦Action执行完毕,ActionInvocation负责根据Struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模板。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

相关文章
|
Java 应用服务中间件 容器
Struts2的工作原理解析
Struts2的工作原理解析
282 0
Struts2的工作原理解析
|
XML Java 数据格式
Struts2入门这一篇就够了
前言 这是Strtus的开山篇,主要是引入struts框架...为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门.... 为什么要引入struts? 既然Servlet能够完成的事,我们为啥要用框架呢?? 框架帮我们封装了很多常用的功能 把Web带过来的参数自动封装到JavaBean中[以前,我们刚开始学的时候是单个单个来获取参数的,后来我们又使用了BeanUtils写工具方法来帮我们封装]。
1198 0
|
Java
[Struts]学习日记2 - 增加一些验证
使用struts的一个好处就是,很多传统jsp/servlet开发中十分琐碎的事情都有规范化的方法来处理了。例如表单验证、错误提示、HTML字符过滤等等。今天简单说一说在form类里进行验证。 在上一篇文章里的LogonForm.
1072 0
|
Java
多模块Struts应用程序的几个问题(及部分解决方法)
Struts从1.1版本开始支持把应用程序分为多个模块,每个模块可以看作独立的应用程序,在带来方便的同时,我也发现了一些问题。比如有一个struts应用程序分了大约十个模块,现在有以下问题不知道大家一般是怎么解决的: 1、因为要进行验证,所以在每个模块对应的资源文件里都要有“errors.
972 0
|
前端开发 Java 数据可视化
|
Java 测试技术 Apache
struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)
为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补; 1:File--->New--->Other--->Maven--->Maven Project--->Next(之后界面如下所示:) --->Next(点击next之后出现如下界...
1007 0
|
XML 网络安全 数据格式
ssh框架之struts2文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72764335 一、前言   上一篇博客我们了解了ssh框架的springmvc的文件下载功能,它在方法里面并不需要设置返回的http的类型和标题,但也能自动弹出下载框,这就是框架本身的一个优点,封装了原生java的方法。
1011 0