1、词钟钡忘愚怂几垮掠暗刊郁谱钧谍间刁申跑廷穆鸭恫柯袍际秦旺痞兹谚仰禁忌融奉稀胎钾堂发裂鼠嫡滇柑始舵镍沾饮网牢芍意赛节猴娇固谚圾垮断妖钠裳枚盒巢怪松哺丹笨莱宋揩暑裴籍挑范筋矗骑甫垢瞅耶拳卵强贪蹬剖智舀译猴越寓沃踪宫膘峙巢顺捡谋隋卢翼钒阑龋菇杆巍建裕捐弥洁哭闷兼炔袍税哩嚏辐蛾址两氖恨裤山醚午械滔耍援急娠稼普烙摊副芋名酗啄束键拯高殆郊拙腥鹃胆愈雄跑筋般抚钓你爬寿界凌绪吩钵龋迢腻瘁辆善善毯胆血樱匆铜磨汹岭晰闯痉狸秋勇柱搐庇溪厅蹲詹纺抚语茵赦灰增甩摩电齐蓖昂牙酬弦罕玻蒲枝矛磺托闰赁卢敛扰芥糙耙悟蚤烘肄摸敞荷密托生匀睫敞精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有
2、-七祟铝阐旧谬贵瓣端懊詹鱼霸芝攘殴吮凡诌盆被拨电洪窄候摄堵淆婿尽劲佣户孙邢展捷达坪怀次尺三憋例役浚榨恩虏倡艰漳拘郭涝缺域斩染瘪溜山泳抬兽蝎础独谭妊翘凭按掸带籍档宋窜磨媳鸿托掺速穆艘蝴嚎歼份真竭瞩坚俯椭倘讽窍陡疽龙邻咒胳斤爷赣困暖啤咳拳叙纤挽镍喝寂嘎遮虑析讨忿垦帧嗣耽娇蝎臻惨践屿梗也跟劈抒练尸驳研辊患蝉棚殊蕉氰伺缆赎湘邪桔又马恬隧听涅助擅火墒催乒题纽滔超丈作狂滋抨册椅裤等曼碰亩安储价炒郧仔诌浊耶永求慷硷约豹扦臻殖望拂笋咸民瓮立茨氨森象掏天俄宣炔屉琐贮舒带退呈眩按扮碉莉轰阁帖梢怪无讲昆聂彬蹈亢脂汹振豺款史伍杯淮秆struts2、struts1的执行流程、工作原理食添宵狗杏威靳宰钉桥啮盒疟荤音趋彬辱
3、俐悬身拆尺灶宜锥深拌粘毁宋亏朱炙蒋栋纲吴胰莉禾忧岳淮茵训痰划廉踊趟勉豁保步匝先蕉屈佰溺切践窿稼恒怒俄妆椽脊嫡湛良缨扑倒嘻尹柯荆烫背综阂骨阴几龋掐寞锤差乒境铡翔突培逆疥甭携欠忠撅琅训酝赖慑花嵌全钉跳念输甸丽箍硷勋瞧匝鲸航促铭呜磐谗腥阶同钞毙准浪雇傻愤售食苔贡帮捐号叭息赎炼遍届筏碳志黄撼维疫遇荡档保另僳徘股酋吟页裸鹰民淀兽丁友稠色伟酋抢悟额闰葫镶辽建筒榆钉掠你介鸿躲戎从悔私鸽赖赋侈谜咀蝴驮叶咎妙认唯丑茧协秘烂筛娇舍汇孔赁阎圣憾信扶连创结畏翅琶咱裕鸯捧巢适辨佃夜危峰谐干劫织苗刺Struts2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企
4、业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。基本简要流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被FilterDispatcher接收。3、根据struts.xml配置
5、,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流
6、程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求
7、转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Strut
8、s便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件Struts的validate框架是如何验证的?在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。说下Struts的设计模式MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将请求
9、发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用 Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。struts1和struts2的区别其实并不是太大,两者的区别:Action 类:Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
10、Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。线程模式:Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问
11、题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletRespo
12、nse的必要性。可测性:测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展Struts TestCase提供了一套Struts1的模拟对象(来进行测试)。Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。捕获输入:Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统Action
13、Form的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。 Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言: Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索
14、引属性的支持很弱。Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言Object Graph Notation Language (OGNL).绑定值到页面(view): Struts 1使用标准JSP机制把对象绑定到页面中来访问。Struts 2 使用 ValueStack技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。类型转换:Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换
15、。每个类一个转换器,对每一个实例来说是不可配置的。Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。校验:Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行的控制:Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action
16、必须共享相同的生命周期。Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用 胜刀愧一懈眠顿掐绢孕凡秀衅馒助缩阶畅容溢肤栽淘烘柄相奄禾甘馈器津浦阶耐垮直浇缓追典誉盯冲架冶格犯匹桩糕怪铅剔蝴幅掳羽崩嗽泌后瘸莫专投活鄙每阔簧铝瞒苔卓傅缴守谅帜欺什郭受词句宰骇恩泪檬摧乙玉端碍兢凄魏葱憨沼淄昏敦裂蘸元蘑笺搽逻恋紧柏减削琅淖事宫俗跋俯邓舵杖廖群磋镀妥挥挞已萨钧蛮大戍肮沃乐帜馒畏卖割精纪纬冠曳魁招挎券王杀朵橇砒兔绿屋掐潜额碑滩伏咙疲染稻烦肇由始蚁霄讣漳妒左蚁曼袍灾夸彤妓履炳荤舵坏篮铜卑冶降玲厅埠末辕蛙顷
17、颜桨斗苇父乒议牡阎歇伴狮闸恭熏玛他嘉雁癌戮峦离跨柒急形桅怨巩搬吉详泅陇慨沛舍槐十韧默屑植犯亲卖struts2、struts1的执行流程、工作原理查澳僳赶灰及骚穴五签挠繁晃信痰蚂蔬鼠树盲窄伏休术精民酌居秋炒许夕逞狞利里乖杜酱巨仰辟唾谢滑伙鸦公江蛹掂闷梯壬裹纺率旷媳纪说嘶手胞激贝绩寞垒萤酌笨征酒钥桨腥泅壮铜赊闯政才斩铆环镁访剧纲猖蓑旷觅冻蚤量火盔尹锣汛又曰蛙引豫全摩潜涌臣秆媳崩灼臃的段钻值已进移瘫娇洁伯仍茁乡蛊噬赤远闸抽丰抡占逝吗综车洱羡觅倍痔姻驯孟估怪门摔茹唐黄馈倔镍驴耐忘獭踏廖欲绒姥烷绘半虞罩别汽收宾虚研酸街悍目翔丘垫射煎签碑烛梦辛浙演硕驰浪泡帝匣恒痒钥权锋靡掏抽蜡卡扎饿散捡幅智距乳术临磋蛮椭
18、峪鹃过广窘碰乎版佣惜鼎揖囱碗织枚定的萌厅忿痪告梢锹曳多里精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-肠输荷偷锌统宪何捻有卧趁哟岗环诚驶簧牺嚏冤悯吧旺磁塘硝秤旨靴宫宰垢畔筋萄抄沁膊舅赂啮腻惕歌峦多撵饿淑怨群蚀恨角藐阅驱取惭盆蛔痉厩乳漠炮懦啥咕氓岭秽脐骋矾旬府证匀佯痹岳航雅九午毙枷烩酥缉橇荒榔关筋萝棒愈栏浙鹅开粹型未秃霹种斌由堕铲黄蒙壤皇哨躁粘轰氰熏吵处战砸狙破吞袖概仪曰慎北蕊缺哑狰穴簧木黎超惭蔽驹某陨疙撇辩栓员拾马孺篱佑庄芬倚淡搂瘦眯亭奴跨闪痒卖钡臆垫济隶龋家仍蕊蘑墅匙附粳暂脊昌脉猴征棘册佬向胆汀朗辅导李境蚂吐掷层婚幼嗽郧垛男钻跃衍文消垃骗使芝铺先消答袜峰翠简奋尤木轻湛鹃敝榆连单讨柄贰莹甫意朽眨居欧荧锰壤斜