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

    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。

时间: 2024-10-07 14:47:52

新手学Struts(二)----Struts2工作机制的相关文章

新手学Struts(一)----JSP+Servlet讲解MVC实现原理

MVC基本原理 一个简单的例子 改良的例子 Struts基本流程的实现     最近在学SSH(Struts+ Hibernate+Spring),这也算是一个比较经典的框架了,之前都是看人家大牛说这个框架,那个框架,说的真溜,自己也是佩服的五体投地啊~~     现在开始自己也要捣鼓捣鼓这些东西,还是有点小激动哒~~,Struts是基于MVC框架实现的,今天主要讲讲Struts的实现过程. MVC基本原理     MVC框架,相信大家也都已经耳熟蓝(能)翔(详)了! 1.终端接受到用户的请求,

新手学Linux(三)----使用 Vagrant 打造跨平台开发环境(二)

前言 安装步骤 工具以及环境介绍 第一步VirtualBox和vagrant的安装 第二步使用vagrant添加虚拟机镜像         1从互联网添加虚拟机镜像文件         2从本地添加镜像文件 第三步初始化虚拟机 第四步使用虚拟机 常用命令 前言     在上一篇<新手学Linux(二)--使用 Vagrant 打造跨平台开发环境(一)>文章中,给大家介绍了什么是vagrant?,vagrant能干什么,以及vagrant的主要使用者,那么今天就给大家讲讲vagrant的具体使用

Struts中的Action类的工作机制

Struts中的Action类的工作机制  所有的Action类都是org.apache.struts.action.Action的子类.Action子类应该覆写父类的execute()方法.当ActionForm Bean被创建,并且表单验证顺利通过后,Struts框架就会调用Action类的execute()方法.execute()方法的定义如下:    public ActionForward execute(ActionMapping mapping                   

深入浅出之Smarty模板引擎工作机制(二)

源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解.   Smarty模板引擎的原理,其实是这么一个过程: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译.然后include这个"编译"后的PHP文件. 所谓编译也就是模板用正则替换成含PHP代码的过程. 实际上并不会每次请求都编译,所以性能尚可.  模板文件和php程序文件经过模板引擎的编译后合成为一个文件,

新手学HighCharts(二)----对比柱状图的动态加载

highcharts数据显示形式 后台 B层实现层 Controller层 前台 JSP JavaScript     上一篇文章 新手学HighCharts(一)--基本使用 中介绍了highCharts的基本使用,今天给大家介绍对比柱状图的使用,贴张图先: highcharts数据显示形式     在highcharts中有一个属性series,这个属性主要是配置图表要展示的数据. var series = [ { name: 'Tokyo', data: [7.0, 6.9, 9.5, 1

php Smarty模板引擎工作机制(二)

所谓编译也就是模板用正则替换成含PHP代码的过程. 实际上并不会每次请求都编译,所以性能尚可. 模板文件和php程序文件经过模板引擎的编译后合成为一个文件,即编译后的文件. 接下来,我们根据该原理流程写一个简单的模板引擎...... 先贴上核心代码: Smarty.class.php文件  代码如下 复制代码 <?php     class Smarty{         public $template_dir;//模板目录         public $compile_dir;//编译目录

新手学JAVA(三)----StringBuilder类

   上一篇文章新手学JAVA(二)----String类与StringBuffer类的区别中了解到,String的值是不可变的,这就导致 每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变 类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象.       StringBuffer类和StringBuilder类功能基本相似.算是两个双胞胎.   下面主要说两点   第一点  线程安全   Str

新手学linux看啥书。?

问题描述 新手学linux看啥书.? 新手学linux.有什么书比<unix环境高级编程>这本书合适新手吗.看了<unix环境高级编程>感觉太厚,太详细了.感觉想先了解下大概轮廓之类的,这样是不是效率高点 解决方案 Unix/Linux编程实践教程,哈佛的一本教材.是Unix环境高级编程的简化版. 解决方案二: 推荐一本 鸟哥的linux私房菜 解决方案三: 一个不错的网站(适合新手学linux的) 解决方案四: 不要看了 看没用,早写.你能写的只有Android windowUW

Session的工作机制详解和安全性问题(PHP实例讲解)_php实例

我们先简单的了解一些http的知识,从而理解该协议的无状态特性.然后,学习一些关于cookie的基本操作.最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行. 我想大多数的php初级程序员一定会认为php默认的session机制的安全性似乎是有一定保障的,事实恰好相反 – php团队只是提供了一套便捷的session的解决方案提供给程序员使用,至于安全性的话,应该由程序员来加强,这是应用程序开发团队的责任.因为,这里面的方法很多,可以这么说吧,没有最好,只