您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 第2章 Struts2基础
第2章Struts2基础-2-掌握Struts2的框架结构了解核心控制器FilterDispatcher了解业务控制器Action了解Struts2支持的视图组件掌握Struts2工作流程掌握Struts2相关文件配置目标-3-Struts2框架概述•Struts2是以WebWork的设计思想为核心,吸收Struts1的部分优点后建立的一个兼容WebWork和Struts1的MVC框架•保留了Struts1的简单易用性,并且充分利用了WebWork的拦截器机制(AOP思想),是一个具有高度可扩展性的框架•Struts2框架诞生后,取代了原有的Struts和WebWork框架。在短时间内迅速成为MVC领域最流行的框架Struts2的目标是使Web开发变得更加容易-4-Struts2框架结构•Struts2中大量使用拦截器来处理用户请求•允许用户的业务逻辑控制器与ServletAPI分离FilterDispatcherAction拦截器3拦截器1拦截器2JSPResultStruts2核心组件-5-Struts2控制器组件-FilterDispatcher•FilterDispatcher是一个Servlet过滤器•是Struts2的核心组件•web.xml中配置FilterDispatcher代码:Struts2的控制器由两部分组成:FilterDispatcher和业务控制器Actionfilterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping-6-Struts2控制器组件-Action•Action是业务控制器•Struts2中的Action类有如下优势:Action类完全是一个POJO,具有良好的代码重用性Action类无需与ServletAPI耦合,因此无论是应用还是测试都非常简单Action类的execute()方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图或另一个ActionpublicStringexecute(){......}-7-Struts2配置文件–struts.xml•Struts.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.haiersoft.LoginAction--actionname=loginclass=com.haiersoft.LoginAction!--配置execute()方法返回值所对应的页面--resultname=error/error.jsp/result!--如果result标签不配置name属性,其默认为success--result/success.jsp/result/action/package/struts-8-Struts2配置文件–struts.properties•Struts.properties主要用来配置全局属性#指定web应用的默认的编码集,#相当于调用HttpServletRequest的setCharacterEncoding方法struts.i18n.encoding=GBK#当struts.xml修改后是否重新加载该文件,在开发阶段最好打开struts.configuration.xml.reload=true#设置浏览器是否缓存静态内容,开发阶段最好关闭struts.serve.static.browserCache=false-9-Struts2标签库•Struts2的标签库也是Struts2框架的重要组成部分,提供了非常丰富的功能,这些标签不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。通过使用Struts2的标签,开发者可以最大限度的减少页面代码的编写。-10-Struts2处理步骤1.客户端浏览器发送一个请求,例如:/mypage.action。2.这个请求经过核心控制器FilterDispatcher过滤处理,FilterDispatcher将请求转交给相应的Action代理。3.Action代理通过配置文件中的信息找到对应的Action类,创建Action对象并调用其execute()方法。4.在调用Action的过程前后,涉及到相关拦截器的调用。拦截器链自动对请求应用通用功能,例如自动化工作流、验证或文件上传等功能。5.一旦Action执行完毕,Action代理根据struts.xml中的配置信息找到execute()方法返回值对应的结果。返回结果通常是视图资源(如JSP页面)或另一个Action。-11-基于Struts2的加法器•在Struts2框架下开发加法器的具体步骤如下:1.配置Struts2应用环境。2.创建add.jsp页面,接收用户输入数据。3.创建业务逻辑类Calculator,实现数据的算术运算。4.创建AddAction类,实现execute()方法。5.在struts.xml中配置AddAction。6.创建add_result.jsp页面,显示计算结果。-12-添加类库-13-修改web.xmlfilter!--配置Struts2框架的核心Filter--filter-namestruts2/filter-name!--配置Struts2核心Filter的实现类--filter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class/filterfilter-mappingfilter-namestruts2/filter-name!--匹配所有请求--url-pattern/*/url-pattern/filter-mapping-14-创建输入页面add.jsp……formid=calcFormmethod=postaction=add.actiontabletbodytrtd第一个数/tdtdinputtype=textname=num1//td/trtrtd第二个数/tdtdinputtype=textname=num2//td/trtrtdinputtype=submitvalue=加//td/tr/tbody/table/form……-15-实现业务逻辑类CalculatorpublicclassCalculator{publicdoubleadd(doublea,doubleb){returna+b;}publicdoublesubtract(doublea,doubleb){returna-b;}publicdoublemultiply(doublea,doubleb){returna*b;}publicdoubledivide(doublea,doubleb){//未判断除数不能为零returna/b;}}-16-创建业务控制器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-17-在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.haiersoft.ch02.action.AddAction!--配置execute()方法返回值所对应的页面--resultname=cal/add_result.jsp/result/action/package/struts-18-创建显示结果页面result.jsp……tabletbodytrtd第一个数/tdtd${param.num1}/td/trtrtd第二个数/tdtd${param.num2}/td/trtrtd结果/tdtd${sessionScope.result}/td/tr/tbody/table……结果值是从session中提取的,而非request中-19-Struts2与自定义框架的比较•基于Struts2的加法器在原理上与自定义框架的加法器是一样的。相比自定义框架的加法器实现,基于Struts2的加法器在代码上简化了许多;而且当增加一个Action时,只需在Struts2的配置文件中进行简单配置即可,无需使用大量代码进行控制实现。另外Struts2框架还提供了许多功能,例如:异常处理、Struts2标签库等,这些功使Struts2开发更加轻松和完善。-20-Struts2在Struts1基础上发展起来的,但实质上以WebWork为核心所有MVC框架都以控制器为核心,其中Struts2控制器由FilterDispatcher和业务控制器Action组成FilterDispatcher包含了框架内部的控制流程和处理机制,是Struts2框架的基础配置文件将FilterDispatcher、Action和视图组件等联系在一起,起到了调度作用,也是降低各类组件耦合程度的一种手段Struts2使用拦截器来处理用户请求,将用户业务逻辑同ServletAPI分离开Action需要用户自定义实现,是应用的核心,包含了对用户请求的处理逻辑小结谢谢!
本文标题:第2章 Struts2基础
链接地址:https://www.777doc.com/doc-3616204 .html