您好,欢迎访问三七文档
1WebWork培训作者:moxie(安子)学员要求:掌握Java、Jsp、JavaServlet,并有一定的Web编程经验课程目的:理解WebWork的核心原理,掌握WebWork开发的相关知识,并能使用WebWork进行实际开发2目录WebWork入门WebWork原理WebWork标签库和ELWebWork实例3WebWork原理MVC模式MVC最初是在Smalltalk-80中被用来构建用户界面Model实现了应用领域的业务模型View用来展现模型中的数据和内部状态Control也称为Dialog,它协调Model与View,把用户请求翻译成系统识别的事件4J2eeWebFramework之现状WebWork:最灵活、简单的Web框架SpringWebFramework:最全面的Web框架Struts:资源最丰富的Web框架Tapestry:组件化最完美的Web框架JSF:最接近asp.net的Web框架Portal:最适合集成的Web框架5WebWork概述XWork1WebWork1WebWork2WebNon-web6Action请求的动作都对应于一个相应的Action一个Action是一个独立的工作单元和控制命令它必需要实现XWork里的Action接口publicinterfaceActionextendsSerializable{publicstaticfinalStringSUCCESS=success;publicstaticfinalStringNONE=none;publicstaticfinalStringERROR=error;publicstaticfinalStringINPUT=input;publicstaticfinalStringLOGIN=login;publicStringexecute()throwsException;}7例子-用户注册register.jspxwork.xmlregisterSuccess.jspregister.action8ActionSupport提供Action常用功能的一个基类错误消息的支持actionandfieldspecificerrorsfielderrorsareautomaticallysupportedbyviews国际化支持1resourcebundleperactionpervasiveUIsupportforretrievingmessages9ActionContext一次Action调用都会创建一个ActionContext调用:ActionContextcontext=ActionContext.getContext()在WebWork中,它通过包装提供了对Servlet的访问:HttpSession——context.getSession()HttpServletRequestparameters——context.getParameters()ServletActionContext,继承ActionContext。可以直接访问servlet相关的API:PageContext,HttpServletRequest,HttpServletResponse,ServletConfig,ServletContext10二、WebWork原理XWork的层次:ActionProxyActionInvocationActionActionProxy:管理Action的生命周期,它是设置和执行Action的起始点。ActionInvocation:在ActionProxy层之下,它表示了Action的执行状态。它持有Action实例和所有的Interceptor11WebWork原理12InterceptorsPracticalAOPverysimple,noexternaldependenciesallowsyoutointerceptactioninvocationsHelpdecoupleandcomponentizeyourcodeInterceptorsareorganizedinto'stacks'listsofinterceptorsappliedinsequence.appliedtoanyactionorpackageofactionsWebWorkismostlyimplementedasaseriesofXWorkinterceptors13例子-TimerInterceptorpublicclassTimerInterceptorimplementsInterceptor{...publicStringintercept(ActionInvocationdispatcher)...{longstartTime=System.currentTimeMillis();Stringresult=dispatcher.invoke();longexTime=System.currentTimeMillis()-startTime;log.info(dispatcher.getProxy().getActionName()+ranin+exTime+ms.);returnresult;}}xwork.xmlinterceptorsinterceptorname=timerclass=com.opensymphony.xwork.interceptor.TimerInterceptor//interceptors14Interceptor的执行顺序Interceptor截获Action的执行,并在它的之前或之后调用相应的方interceptor-stackname=xaStackinterceptor-refname=thisWillRunFirstInterceptor/interceptor-refname=thisWillRunNextInterceptor/interceptor-refname=thisWillRunLastInterceptor//interceptor-stackthisWillRunFirstInterceptorthisWillRunNextInterceptorthisWillRunLastInterceptorMyAction1MyResult(result)thisWillRunLastInterceptorthisWillRunNextInterceptorthisWillRunFirstInterceptor15ValueStack由OGNL框架实现可以把它简单的看作一个ListStackObject:放入stack中的对象,一般是action。StackContext(map):stack上下文,它包含一些列对象,包括request/session/attr/applicationmap等。EL:存取对象的任意属性,调用对象的方法,遍历整个对象结构图。16ResultTypeResult它是Action执行之后返回的一个字符串常量它表示Action执行完成的状态。ResultType它是一个类它在Action执行,并返回result之后调用它用来决定WebWork使用什么方式展现界面result-typename=dispatcherclass=com.opensymphony.webwork.dispatcher.ServletDispatcherResultdefault=true/resultname=successtype=dispatcher/register/registerSuccess.jsp/result17三、WebWork标签库和ELww:propertyvalue=“”/取值输出ww:iteratorvalue=“”status=“”/迭代标签,可以输出Collection,Iterator,Enumeration,Map,array,XMLNode,orXMLNodeListstatus:用来取得迭代器的状态:getCount(),getIndex(),isFirst(),isLast(),isEven(),isOdd()ww:iftest=“”/ww:ifww:elseiftest=“”/ww:eleseifww:else/ww:else18ExpressionLanguageOGNLExpressionResultemployee.namegetEmployee().getName()employee.toStringgetEmployee().toString()employee.relations[0]FirstelementoftheRelationscollectionnamein{null,Rick}TrueisnameisnullorRickemployee.relations.{name}CallsgetName()oneachrelationsinthecollectionreturninganewcollection例子-员工登记19四、实例验证多模块处理一个Action类多方法文件上传防止重复提交进度条显示20验证XWork验证框架验证Action的属性减弱验证与Action之间的耦合验证信息存储在独立的xml文件中验证出错信息放置在Action中可插拔的验证类验证机制有Interceptor实现21已提供的验证类ValidatorResultRequiredFieldfield!=nullRequiredStringfield!=null&string.length()0IntRangeIntegerisinagivenrangeDateRangeDateisinagivenrangeEmailValidemailfieldURLValidURLfieldExpression/FieldExpressionAnyOGNLexpressionevaluatestotrueeg.pet.name!=dogAllowsyoutocreateverypowerfulvalidationsusingjustXMLandyourexistingmodel22例子-注册验证register.jspxwork.xmlregisterSuccess.jspregister.actionRegisterAction-validation.xmlregister.jsp验证出错23多模块Include:使用多个XWork配置文件Package:package之间可以继承Namespace:用来区分不同package中的action24一个Action类多方法方法要求:无参数,返回一个字符串类型,抛出Exception,例如:publicStringdoDefault()throwsExcetpion{returnINPUT;}定义方式1、直接访问,actionName!methodName.action。例如:register!doDefault.action2、在XWork中定义,使用method属性。例如:actionname=registerDefaultclass=com.skyon.demo.register.RegisterActionmethod=“doDefault”…………25文件上传fileUpload.jspxwork.xmluploadSuccess.jspfileUpload.action26防止重复提交(doubleclick)在页面中设置ww:token/inputtype=hiddenname=webwork.token.namevalue=webwork.token/inputty
本文标题:webwork培训
链接地址:https://www.777doc.com/doc-7082790 .html