Strurts2
[闪点行动2龙之崛起]《闪点行动2:龙腾》:《闪点行动2:龙腾》
![[闪点行动2龙之崛起]《闪点行动2:龙腾》:《闪点行动2:龙腾》](https://img.taocdn.com/s3/m/68eea7638f9951e79b89680203d8ce2f006665e3.png)
[闪点行动2龙之崛起]《闪点行动2:龙腾》:《闪点行动2:龙腾》篇一: 《闪点行动2:龙腾》:《闪点行动2:龙腾》-游戏前言,《闪点行动2:龙《闪点行动2:龙腾》是由Codemasters开发的一款第一人称射击类的单机游戏。
国际发行商Codemasters近期证实,第一人称射击新作《闪点行动2:龙腾》北美地区发售时间将推迟至“2008年冬季”。
此前Codemasters曾宣布将在2008年第二季度发行《闪点行动2:龙腾》,但该公司并未对此次推迟做出任何解释。
闪点行动2_《闪点行动2:龙腾》-游戏前言Codemasters的工作效率值得我们惊讶,当我们都还在回味他们刚新鲜出炉的《科林麦克雷越野2》之际,他们就已经神不知鬼不觉地推出他们的有一部写实形FPS作品,也就是今天小猴要介绍的本作——《闪电行动2:龙腾》。
小猴发现有意思的是,写实类的FPS作品初到玩家面前要数到98年10月推出的《三角洲部队》,从586时代到今天次世代的《闪电行动2:龙腾》,刚好整整过了11年整的时间。
究竟这11年历程后的现在,本作又能为我们带来怎样的硝烟战场?赶紧拿起枪杆吧!闪点行动2_《闪点行动2:龙腾》-游戏画面Codemasters公司推出了不少的佳作,家传户晓,其中画面上的成功是作品传诵千里的原因之一。
他们总会投入1个让人津津乐道的游戏引擎去更好表达、演绎1个作品的风格与特色,本作自然也不例外。
在早前的《燃料》及最近刚过的《科林麦克雷越野2》的使用之后,工作小组经改良推出了全新的3D引擎“Neon”,并在本作上强势使用,要说这引擎的优势,就是对光影、爆炸、烟雾以及尘土等特效中进行自然真实的处理,并展现在玩家的面前,本作的游戏画面中,也很好地体现这一点。
闪点行动2_《闪点行动2:龙腾》-游戏任务任务流程:这次的任务是摧毁PLA的对舰导弹,你将和另外2个小队同时行动,你们将乘3架黑鹰直升机进入目标外围,你有一次呼叫空袭的机会,把他用到tank身上吧。
[战术]老生常谈:dust2战术分析
![[战术]老生常谈:dust2战术分析](https://img.taocdn.com/s3/m/56ca840ab5daa58da0116c175f0e7cd18525185e.png)
[战术]老生常谈:dust2战术分析T的进攻(手枪局):首先说武器配置,一般来说,T的开局有2种装备方案,USP+Flash。
Glock+半甲。
2种武器配置适合2种的进攻路线。
de_dust2的进攻点相当明确,A大道,A小道,中门,B区。
主要交火区域在A平台和B区内。
由于T开局武器的限制,是不会贸然冲中门的。
而A小道的区域十分狭窄,很容易被HE造成重创,所以也很少有战队手枪局选择走A小道。
那么,就剩下2个区的进攻点。
A大道:攻击此点比较适合的武器配置是USP+Flash。
对形最好保持5人,集中火力优势。
从A 门出去,一般不会碰到压前防守的CT,然后在进入A道对方防守视野前排成1字形一起闪出。
这样的话,如果在A大道视野范围内有防守的CT,那么5个人的火力优势会瞬间秒杀对手。
然后就是攻击平台,此时应该使用Flash,为攻占A平台做掩护。
一般是让靠队伍后面的3名队员分别扔向A小道,CThome,和平台。
后面3位队员扔出flash后前2名队员马上通过。
CT局CT为了守2个点,不太会采用密集防守,所以要防止的是对方的反扑,也就是在埋下C4后如何守下A平台。
压前攻上的2名队员要在观察对方反扑态势的时候使用flash来拖延。
对于埋下C4以后的T来说,每一秒都是很宝贵的。
CT的反扑路线一般在小道或者中门。
本人建议攻下A平台后5名队员从小道压下,用火力优势和反扑的CT打肉搏战。
可以讨到一定便宜,因为那时分散防守的CT对形没有调整好,很容易出现以多打少的有利局面。
如若CT从中门反扑,那从后插上也可以很大程度的牵制对方。
B点:进攻B点的武器配置一般是Glock+半甲,因为没有手雷的掩护一定要注意进攻节奏。
人员分配方面,为了防止对方的中门集结防守,使自己处于不利的一面,建议是5人强攻B 点,如果B点没有CT的话接下来布防的位置很讲究,CT反扑点有3个,B洞,B门,B门上的小洞。
这里CT反扑会从这3个点进行共同反扑,那么就要T分工防守这3个点。
军团要塞2——兵种介绍

军团要塞2——兵种介绍 序⾔: T F2的⽕爆可以说是⼤家想得到的,从T F2出来哪天起很多其他服务器相继关闭并转变成T F2服务器就可以看出这个游戏的影响⼒。
现在T F2仍然出于上升期,⽣命⼒⽐较旺盛。
⼩弟玩T F2⽉余时间来略有⼼得,不妨与⼤家分享。
由于本⾝⽔平有限,尽管参考了⼤量资料但是并不能保证完美⽆瑕,希望看到错误的朋友及时指出,以免误导他⼈!谢谢 由于是第⼀章,我就重点说⼀下T F2中九个⼈属性。
游戏中伤害什么的就是做简单的加减法,C r i t i c a l H i t(严重攻击)就是持有武器的攻击⼒×3。
其实爆头并不是代表头部⾎格少,⽽是因为击中头部的⼦弹都算严重攻击,伤害值⽐较⼤⽽已。
游戏中的物件: ⼤号⾎箱:全满 中号⾎箱:50格 ⼩号⾎瓶:25格 ⼤号弹药:全满 中号弹药:50弹药(⼯程师增加100⾦属) ⼩号弹药:25弹药(⼯程师增加50⾦属) 敌⼈掉落武器:相当于中号弹药。
『斥候S c o u t』侦察兵 ⼈物属性:攻击兵种 ⽣命值:125 速度:5(有戏中⼈物速度分为5个等级,侦察兵最快) 主要武器:⼿持散弹枪(专⽤) 次要武器:⼿枪(通⼯程师⼿枪) 辅助武器:棒球棒(专⽤) ⼿持散弹枪:每颗⼦弹包含10发弹丸,每个弹丸攻击⼒6;发射间隔625m s[1000m s=1s,下同];攻击范围很短,只有在512英⼨内才是有效射程。
⼿枪:每颗⼦弹攻击⼒为15;发射间隔250m s。
棒球棒:攻击⼒25;攻击间隔500m s;最快的也是最弱的辅助武器。
特殊技能:双联跳,双倍速占领时间。
点评: 最⾼的移动速度,双联跳让敌⼈⽆法找到你的⼀下个落脚点,这些都让侦察兵的操作富有技术含量。
作为攻击兵种双倍速的占领时间也许就是翻盘或者偷袭或者强攻胜利带有可⾏性。
混战中对的⼈进⾏有效的骚扰可以让敌⼈险⼊混乱从⽽给⾃⼰的队友赢得宝贵的准备时间。
步哨枪:⼀定要绕着⾛,⼀级的步哨枪都能轻松搞掂S c o u t。
cs2fps参数

cs2fps参数CS2FPS参数是指将电脑游戏《反恐精英:全球攻势》(Counter-Strike: Global Offensive)转化为第一人称射击类游戏(First-Person Shooter,简称FPS)的设置参数。
这个参数在游戏社区中非常流行,因为它可以改变游戏的玩法和体验。
下面我们来详细了解一下CS2FPS参数的作用和具体设置。
CS2FPS参数的作用是将《反恐精英:全球攻势》这款第三人称射击游戏转化为第一人称射击游戏。
第一人称射击游戏是指玩家在游戏中所看到的视角是角色的眼睛视角,使得玩家能够更加身临其境地感受到游戏的真实性和紧张度。
通过改变CS2FPS参数,玩家可以调整游戏中的视角,使之更符合自己的喜好和游戏习惯。
CS2FPS参数的设置可以通过修改游戏的配置文件来实现。
在游戏的安装目录中,可以找到一个名为config.cfg的配置文件,通过编辑这个文件,可以修改游戏的各种设置参数,包括CS2FPS参数。
下面是一些常见的CS2FPS参数及其设置方法:1. cl_first_person_uses_world_model:这个参数控制玩家在第一人称视角下是否看到自己的角色模型。
将其设置为0,则在第一人称视角下不会看到自己的角色模型;将其设置为1,则在第一人称视角下会看到自己的角色模型。
2. viewmodel_fov:这个参数控制第一人称视角中武器模型的视野范围。
通过增大这个参数的数值,可以让武器模型在视野中占据更大的比例,增强第一人称视角的沉浸感。
3. viewmodel_offset_x、viewmodel_offset_y、viewmodel_offset_z:这三个参数控制第一人称视角中武器模型的位置偏移。
通过调整这些参数的数值,可以改变武器模型在视野中的位置,使其更符合玩家的喜好。
4. cl_bob_lower_amt、cl_bobamt_lat、cl_bobamt_vert:这三个参数控制第一人称视角中角色和武器模型的晃动效果。
森林之子2飞行代码

森林之子2飞行代码摘要:1.介绍《森林之子2 飞行代码》2.讲解代码的实现过程3.分析代码的实现原理4.总结《森林之子2 飞行代码》的特点和应用领域正文:《森林之子2 飞行代码》是一款由森林之子团队开发的,基于物理模拟的飞行游戏。
游戏中,玩家可以通过编写代码来控制飞行器的飞行,从而完成各种任务。
下面,我们将详细介绍这款游戏的代码实现过程和原理。
首先,游戏中的代码实现主要是通过Python 语言完成的。
Python 作为一种广泛应用于人工智能和物理模拟领域的语言,具有简洁明了的语法和强大的功能。
在《森林之子2 飞行代码》中,玩家需要编写Python 代码来实现飞行器的各种功能,如起飞、飞行、转向、着陆等。
接下来,我们来详细讲解一下代码的实现过程。
以起飞为例,玩家需要编写如下代码:```pythonthrottle = 1.0 # 设置油门为全开pitch = 10.0 # 设置机头抬高10 度yaw = 0.0 # 设置机头方向为正前方```通过调整这些参数,玩家可以实现飞行器的各种飞行状态。
同时,游戏中还提供了丰富的API,使得玩家可以轻松地实现各种复杂的功能。
在代码实现过程中,物理模拟是一个非常重要的原理。
游戏中的飞行器受到重力、升力、阻力等多种力的作用,玩家需要通过调整代码中的参数,来实现对这些力的平衡和控制。
例如,通过增加油门可以增加升力,从而让飞行器飞得更高;通过减小阻力,可以降低飞行器的速度,从而更容易地完成任务。
最后,我们来总结一下《森林之子2 飞行代码》的特点和应用领域。
这款游戏具有高度的可定制性和可玩性,玩家可以根据自己的需求和喜好编写代码,实现各种不同的飞行器和飞行方式。
同时,游戏中的物理模拟原理,也让玩家可以在游戏中学习到物理知识,提高编程技能。
求生之路2武器分析

求生之路2武器分析一.前期武器(每一章节第一关和第二关开始使用)1.冲锋枪(smg):20的威力,50/650发的载弹,总共是700发子弹,射速属于所有枪里最快的,意味着子弹在高难度下消耗快,相应的威力也是所有枪里最小的,但是精准度特别高,写实模式经过练习会非常好用。
2.消音冲锋枪(smg_slienced):25的威力,50/650发的载弹,除了比普通冲锋枪的威力大,精准度稍微低一点以外和普通的冲锋枪没有太大差别。
3.泵动式散弹枪(pumpshotgun):25*10的威力,8/56发的载弹,总共是64发子弹,泵动式散弹枪和铬合金霰弹枪由于射速问题,在高难度下一定要控制好攻击节奏,否则就会力不从心。
高难度下要注意不要误伤队友。
4.铬合金霰弹枪(chromeshotgun):31*8的威力,8/56发的载弹,铬合金霰弹枪的单发威力属于所有散弹枪里最高的,但是由于射速问题,和泵动式散弹枪一样最终都会被更高阶的半自动散弹枪替代。
5.手枪(pistol):36的威力,15/∞或30/∞的载弹,手枪的威力高于初期的两把冲锋枪和后期的M16步枪,但是由于射速,攻击范围的缺陷最终还是被近身武器所替代。
变成双持以后载弹增加至30发,射速有略微提升。
6.马格南手枪(magnum):80的威力,8/∞的载弹,马格南手枪是唯一可以和近身武器媲美的手枪,在非写实模式下一击命中witch的头部可以击退witch,并且其子弹可以穿透僵尸,在写实模式下,马格南手枪是除了M60和榴弹发射器以外唯一一个能一发子弹杀死小僵尸的远程武器,另外,马格南手枪在倒地的时候能最大限度地提供保护。
7.近身武器(melee):300的威力,在所有武器中除了榴弹发射器以外,威力最大的就属它了,近身武器是求生之路2相对于一代最大的亮点,也是多数玩家必拿的武器之一。
近身武器在除了猎头者模式下的任何模式,任何难度都能对小僵尸进行秒杀,对于除了charger,tank,witch之外的其他5个特殊感染者也是一刀带过。
意大利贝纳利m4半自动霰弹枪(贝内利M2战术霰弹枪)

意大利贝纳利m4半自动霰弹枪(贝内利M2战术霰弹枪)核心内容提要意大利著名生产厂商贝内利公司于2023年向美国警用霰弹枪市场推出一款半自动霰弹枪,这就是贝内利M2战术霰弹枪。
几年来,该枪的销售业绩一直不错特警遇到的大部分交战情况都是近距离枪战,若是警员只用半自动手枪或唧筒式霰弹枪,在近距离无法拥有火力优势,可能会造成警员的重大伤亡。
所以近距离与嫌犯对峙时警员需要快速连续射击。
半自动霰弹枪拥有的射速、威力就显示出了优越性。
为此,贝内利公司于2023年面向警用部门推出贝内利M2警用战术霰弹枪,几年来,该枪在市场创下了较好的销售业绩。
配用普通枪托,不带小握把的M2战术霰弹枪配用普通枪托,带有小握把的M2战术霰弹枪Part.1 结构性能展示贝内利M2战术霰弹枪枪管长470mm,全枪长1 010mm。
该枪可以发射弹壳长70mm和76mm的12号霰弹,容弹量分别为5 1发和4 1发,空枪质量3kg,全枪轻便,便于携行。
贝内利M2战术霰弹枪的枪管用螺纹固定在铝合金机匣上,为钢制滑膛枪管。
枪管内部安装有喉缩,可提高射击精度。
枪管前部上方设有带护翼的准星。
枪管后方刻有铭文。
机匣顶部安装有LPA“鬼环”式照门护手采用聚合物打造而成。
护手握持部位设有滚花防滑纹。
护手握持部位前方刻有公司铭文。
筒式弹仓设在护手内部,弹仓前方设有延长管,可多容纳1发霰弹,弹仓延长管的后方安装有一个背带环,与枪托下方的背带环配合安装枪背带。
不使用弹仓延长管时,可将其卸掉。
抛壳窗特写,可以看到内部的枪机组件机匣右侧抛壳窗下方前后部分别刻有BENELLI-ITALY和M2字样。
机匣顶部安装了LPA“鬼环”式照门,其与枪管前方的准星配合实施瞄准。
这种瞄具现在已经成为战术霰弹枪的标配,非常好用。
空仓挂机解脱装置设在抛壳窗下方,为按钮式。
机匣下方、扳机护圈前方设有保险。
枪口特写,可以看到枪管内安装的喉缩枪托采用中空设计,侧面斜向设有多个"V"形孔并加填有垫片。
adidas ultra boost最全面介绍,有些你可能不知道

健康猫APP-让运动不寂寞/adidas ultra boost最全面介绍,有些你可能不知道Adidas Ultra Boost可以说是目前最火的休闲跑鞋了,口碑很不错!无论是舒适度还是外型都十分出色!再加上侃爷等各大明星上脚宣传,很多配色都是一鞋难求了!但你了解adidas ultra boost的发展历程吗?adidas ultra boost 1.0 和adidas ultra boost2.0有什么区别?adidas Ultra Boost Uncaged又是什么鬼?相信还是有很多人傻傻分不清,下面小编带你全面了解adidas ultra boost!adidas ultra boost 1.0健康猫APP-让运动不寂寞/2015年1月,Adidas 在纽约发布了旗下全新的革命性跑鞋Ultra Boost,并且宣称这就是目前世上最强的公路跑鞋。
2015年2月正式发售,发售价为¥1399。
Ultra Boost有三大科技:鞋面采用Adidas 独创的Primeknit 编织技术,全新的Ultra Boost 中底以及Torsion System 技术。
Ultra Boost鞋面采用了阿迪达斯Adidas 独创的Primeknit一体编织技术,带来出色包裹性的同时赋予双脚最佳的透气性和舒适度。
健康猫APP-让运动不寂寞/Adidas 将原先置于中底下方的防扭转系统Torsion System完全植入了Boost 中底之中,为了让Ultra Boost 更轻薄将Torsion System 做的更小,整个Torsion System 在技术上被压缩过,虽然整体变小了,但是在密度上却达到前代产品的2 倍,因此可以在保证整个鞋底稳定性的同时,增加运动时的回弹动力。
健康猫APP-让运动不寂寞/Ultra Boost 最重要的是Boost 中底,这双Ultra Boost 跑鞋Adidas 花了2 年的时间用于研发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阐述struts2的执行流程。
Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action 和用户实现的企业业务逻辑组件。
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器Action和业务逻辑组件是需要用户来自己实现的。
用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
基本简要流程如下:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
工作原理在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。
在这个过程中需要涉及到ActionMapper工作流程1、客户端浏览器发出HTTP请求.2、根据web.xml配置,该请求被FilterDispatcher接收3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面6、返回HTTP响应到客户端浏览器最后根据struts.xml中的配置找到对应的返回结果result,在返回HTTP响应到客户端浏览器其实用最简单的七个步骤:1:客户端在浏览器中输入一个url地址。
2:这个url请求通过http协议发送给tomcat。
3:tomcat根据url找到对应项目里面的web.xml文件。
4:在web.xml里面会发现有struts2的配置。
5:然后会找到struts2对应的struts.xml配置文件。
6:根据url解析struts.xml配置文件就会找到对应的class。
7:调用完class返回一个字String,根据struts.xml返回到对应的jsp。
struts2标签分类:1.表单UI标签2.非表单UI标签3.控制标签4.数据标签为什么使用struts2?1.开源2.mvc框架3.纯pojo的Action4.更好的标签特性5.易测试6.易扩展1.Struts2的基本组成Struts2有3部分组成:核心控制器(FilterDispatcher)、业务控制器和用户实现的业务逻辑组件,其中FilterDispatcher是由Struts2框架提供的,而用户需要手动实现业务控制器(Action)和业务逻辑组件(就是业务逻辑部分)2.核心控制器:FilterDispatcherFilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。
如果用户请求以action结尾,该请求将被转入Struts 2框架处理。
Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action 来处理该请求。
Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action 时,定义了该Action的name属性和class属性,其中name属性决定了该Action 处理哪个用户请求(请求和method方法中的action名字对应),而class属性决定了该Action的实现类。
Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。
而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。
显然,上面的处理过程是典型的AOP(面向切面编程)处理方式从上图可以看出:用户实现的Action类仅仅是Struts 2的Action代理的代理目标。
用户实现的业务控制器(Action)则包含了对用户请求的处理。
用户的请求数据包含在HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest对象。
拦截器负责将HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例。
3.业务控制器正如从上图所看到的,业务控制器组件就是用户实现Action类的实例,Action 类里通常包含了一个execute方法,该方法返回一个字符串——该字符串就是一个逻辑视图名,当业务控制器处理完用户请求后,根据处理结果不同,execute 方法返回不同字符串——每个字符串对应一个视图名。
程序员开发出系统所需要的业务控制器后,还需要配置Struts 2的Action,即需要配置Action的如下三个部分定义:—Action所处理的URL。
—Action组件所对应的实现类。
—Action里包含的逻辑视图和物理资源之间的对应关系。
每个Action都要处理一个用户请求,而用户请求总是包含了指定URL。
当Filter Dispatcher拦截到用户请求后,根据请求的URL和Action处理URL之间的对应关系来处理转发。
4.Struts 2的模型组件通常,MVC框架里的业务控制器会调用模型组件的方法来处理用户请求。
也就是说,业务逻辑控制器不会对用户请求进行任何实际处理,用户请求最终由模型组件负责处理。
业务控制器只是中间负责调度的调度器,这也是称Action为控制器的原因。
从上图中看到Action调用业务逻辑组件的方法。
当控制器需要获得业务逻辑组件实例时,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获得业务逻辑组件的实例;或者利用其他IoC容器(如Spring容器)来管理业务逻辑组件的实例。
5.Struts 2的视图组件Struts 2已经改变了Struts 1只能使用JSP作为视图技术的现状,Struts 2允许使用其他的模板技术,如FreeMarker、Velocity作为视图技术。
当Struts 2的控制器返回逻辑视图名时,逻辑视图并未与任何的视图技术关联,仅仅是返回一个字符串,该字符串作为逻辑视图名。
当我们在struts.xml文件中配置Action时,不仅需要指定Action的name属性和class属性,还要为Action元素指定系列result子元素,每个result子元素定义一个逻辑视图和物理视图之间的映射。
前面所介绍的应用都使用了JSP技术作为视图,故配置result子元素时没有指定type属性,默认使用JSP 作为视图资源。
如果需要在Struts 2中使用其他视图技术,则可以在配置result子元素时,指定相应的type属性即可。
例如,如果需要使用FreeMarker,则为result指定值为freemarker的type属性;如果想使用Velocity模板技术作为视图资源,则为result 指定值为velocity的type属性……经过上面介绍,我们发现Struts 2框架的其实就webwork2.2的升级版一个请求在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。