您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 49第2章 Struts2基础
Struts2基础-2-掌握Struts2的框架结构了解核心控制器StrutsPrepareAndExecuteFilter了解业务控制器Action了解Struts2支持的视图组件掌握Struts2工作流程掌握Struts2相关文件配置目标-3-2.1.1Struts2框架概述Struts2是以WebWork的设计思想为核心,吸收Struts1的部分优点后建立的一个兼容WebWork和Struts1的MVC框架保留了Struts1的简单易用性,并且充分利用了WebWork的拦截器机制(AOP思想),是一个具有高度可扩展性的框架Struts2框架诞生后,取代了原有的Struts和WebWork框架。在短时间内迅速成为MVC领域最流行的框架Struts2的目标是使Web开发变得更加容易-4-2.1.2Struts2框架结构Struts2中大量使用拦截器来处理用户请求允许用户的业务逻辑控制器与ServletAPI分离-5-2.2.3Struts2控制器组件-StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter是一个Servlet过滤器是Struts2的核心组件web.xml中配置StrutsPrepareAndExecuteFilter代码:采用StrutsPrepareAndExecuteFilter的好处在哪里?Struts2的控制器由两部分组成:StrutsPrepareAndExecuteFilter和业务控制器Action-6-Struts2控制器组件-StrutsPrepareAndExecuteFilterfilterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping-7-2.1.3Struts2控制器组件-ActionAction是业务控制器Struts2中的Action类有如下优势:Action类完全是一个POJO,具有良好的代码重用性Action类无需与ServletAPI耦合,因此无论是应用还是测试都非常简单Action类的execute()方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图或另一个ActionpublicStringexecute(){......}-8-2.1.4Struts2配置文件–web.xmlweb.xml主要完成对StrutsPrepareAndExecuteFilter的配置-9-2.1.4Struts2配置文件–struts.xmlStruts.xml主要用来配置ActionStruts2的配置文件有两种:配置Action的struts.xml文件配置Struts2全局属性的struts.properties文件struts!--指定Struts2处于开发阶段,可以进行调试--constantname=struts.devModevalue=true/!--Struts2的Action都必须配置在package里--packagename=p1extends=struts-defaultnamespace=/admin!--定义一个login的Action,实现类为com.dh.action.LoginAction--actionname=loginclass=com.dh.action.LoginAction!--配置execute()方法返回值所对应的页面--resultname=error/error.jsp/result!--如果result标签不配置name属性,其默认为success--result/success.jsp/result/action/package/struts-10-2.1.4Struts2配置文件–struts.propertiesStruts.properties主要用来配置全局属性#指定web应用的默认的编码集,#相当于调用HttpServletRequest的setCharacterEncoding方法struts.i18n.encoding=GBK#当struts.xml修改后是否重新加载该文件,在开发阶段最好打开struts.configuration.xml.reload=true#设置浏览器是否缓存静态内容,开发阶段最好关闭struts.serve.static.browserCache=false-11-2.1.5Struts2标签库Struts2的标签库也是Struts2框架的重要组成部分,提供了非常丰富的功能,这些标签不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。通过使用Struts2的标签,开发者可以最大限度的减少页面代码的编写。-12-(1)客户端/浏览器发送请求,J2EE容器解析HTTP包,将其封装成HttpServletRequest。传到核心控制器StrutsPrepareAndExecuteFilter中。(2)StrutsPrepareAndExecuteFilter拦截到这个请求,进行过滤处理,根据请求路径到ActionMapper中查询决定调用哪个Action。(3)根据ActionMapper的返回结果,StrutsPrepareAndExecuteFilter委托Action代理(Proxy)去配置文件struts.xml中找到这个Action。(4)Action代理创建一个ActionInvocation,开始对拦截器和Action进行递归调用。2.1.6Struts2处理步骤-13-(5)各个拦截器完成各自任务,拦截器链自动对请求应用通用功能。例如自动化工作流、验证或文件上传。(6)真正对Action的调用,回调Action的execute()方法,获取用户请求执行相应的业务逻辑,返回一个字符串作为处理结果。(7)Action代理根据struts.xml中的配置信息找到execute()返回值对应的结果。(8)Result对象将返回数据输出到流中(9)返回HttpServletResponse给J2EE容器,容器发送HTTP包到客户端。2.1.6Struts2处理步骤-14-2.2基于Struts2的加法器在Struts2框架下开发加法器的具体步骤如下:1.配置Struts2应用环境。2.创建add.jsp页面,接收用户输入数据。3.创建业务逻辑类Calculator,实现数据的算术运算。4.创建AddAction类,实现execute()方法。5.在struts.xml中配置AddAction。6.创建add_result.jsp页面,显示计算结果。-15-添加类库Xwork-core.jar-16-修改web.xmlfilter!--配置Struts2框架的核心Filter--filter-namestruts2/filter-name!--配置Struts2核心Filter的实现类--filter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-name!--匹配所有请求--url-pattern/*/url-pattern/filter-mapping-17-创建输入页面add.jsp……formid=calcFormmethod=postaction=add.actiontabletbodytrtd第一个数/tdtdinputtype=textname=num1//td/trtrtd第二个数/tdtdinputtype=textname=num2//td/trtrtdinputtype=submitvalue=加//td/tr/tbody/table/form……-18-实现业务逻辑类CalculatorpublicclassCalculator{publicdoubleadd(doublea,doubleb){returna+b;}publicdoublesubtract(doublea,doubleb){returna-b;}publicdoublemultiply(doublea,doubleb){returna*b;}publicdoubledivide(doublea,doubleb){//未判断除数不能为零returna/b;}}-19-创建业务控制器AddActionpublicclassAddAction{privatedoublenum1;privatedoublenum2;......num1、num2的get、set方法/***调用业务逻辑方法,实现业务,控制流程转向*/publicStringexecute(){//新建业务逻辑对象Calculatorbiz=newCalculator();//调用业务逻辑方法,获得返回值doubleresult=biz.add(num1,num2);//将计算结果存入Session中ActionContext.getContext().getSession().put(result,result);returncal;}}Struts2的Action可以通过ActionContext来访问ServletAPI-20-在struts.xml中配置业务控制器AddAction?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN!--指定Struts2处于开发阶段,可以进行调试--constantname=struts.devModevalue=true/!--Struts2的Action都必须配置在package里--packagename=p2extends=struts-default!--定义一个add的Action,实现类为AddAction--actionname=addclass=com.dh.ch02.action.AddAction!--配置execute()方法返回值所对应的页面--resultname=cal/add_result.jsp/result/action/package/struts-21-创建显示结果页面result.jsp……tabletbodytrtd第一个数/tdtd${param.num1}/td/trtrtd第二个数/tdtd${param.num2}/td/trtrtd结果/tdtd${sessionScope.result}/td/tr/tbody/table……结果值是从session中提取的,而非request中-22-Struts2与自定义框架的比较基于Struts
本文标题:49第2章 Struts2基础
链接地址:https://www.777doc.com/doc-3270540 .html