![STRUTS2零配置_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/8a7deabf-43cb-4a4a-bd14-c0148bd49dff/8a7deabf-43cb-4a4a-bd14-c0148bd49dff1.gif)
![STRUTS2零配置_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/8a7deabf-43cb-4a4a-bd14-c0148bd49dff/8a7deabf-43cb-4a4a-bd14-c0148bd49dff2.gif)
![STRUTS2零配置_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/8a7deabf-43cb-4a4a-bd14-c0148bd49dff/8a7deabf-43cb-4a4a-bd14-c0148bd49dff3.gif)
![STRUTS2零配置_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/8a7deabf-43cb-4a4a-bd14-c0148bd49dff/8a7deabf-43cb-4a4a-bd14-c0148bd49dff4.gif)
![STRUTS2零配置_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/8a7deabf-43cb-4a4a-bd14-c0148bd49dff/8a7deabf-43cb-4a4a-bd14-c0148bd49dff5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简述STRUTS2Convention零酉己置从 struts2.1 开始,struts2 不再推荐使用 Codebehind 作为零配置插件,而是改为使用 Convention 插件来支持零配置,和 Codebehind 相比,Convention 插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用 struts.xml 文件进行配置,甚至不需要使用 Annotation 进行配置,而是由 struts2 根据约定自动配置。如何使用 Convention1.将 struts-Convention-plugin-2.1.6.jar 文件复制到 WEB-INF/lib 路径下2.对于 Conv
2、ention 插件而言,它会自动搜索位于 action,actions,struts,struts2 包下的所有 java 类,Convention 插件会把如下两种 java 类当成 Action 处理:1)所有实现了 com.opensymphony.xwork2.Action 的 java 类2)所有类名以 Action 结尾的 java 类3.Convention 插件还允许设置如下三个常量:1)struts.Convention.exclude.packges:指定不扫描哪些包下的 java 类,位于这些包结构下的java 类将不会自动映射成 Action;2)struts.conv
3、ention.package.locators:Convention 插件使用该常量指定的包作为搜寻 Action的根包。对于 actions.fore.LoginAction 类,按约定原本应映射到/fore/login;如果将该常量设为 fore,则该 Action 将会映射到/login3)struts.convention.action.packages:Convention 插件以该常量指定包作为根包来搜索 Action类。Convention 插件除了扫描 action,actions,struts,struts2 四个包的类以外,还会扫描该常量指定的一个或多个包,Conventi
4、on 会视图从中发现 Action 类。注意:struts.convention.package.locators 和 struts.convention.action.packages 两个常量的作用比较微妙,开发者在利用这两个常量时务必小心。如:下面 Action 所在包被映射的命名空间如下:com.fun.actions.LoginAction 映射至 U/com.fun.actions.myoffice.CarInfoAction 映射至 U/myofficecom.fun.struts.myoffice.EntINfoAction 映射至 U/myofiice4.映射 Action
5、的 name 时,遵循如下两步规则:1)如果该 Action 类名包含 Action 后缀,将该 Action 类名的 Action 后缀去掉。否则不做任何处理。2)将 Action 类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成中画线写法(所有字母小写,单词与单词之间以中画线隔开)如 : LoginAction 映 射 的 Acion 的 name 属 性 为 login,GetBooks 映 射 的 Action 的 name 的 属 性 为get-books,AddEmployeeAction 映射的 Action 的 name 属性为 add-employee5.默认情况
6、下。Convention 总会到 WE 无用的 WEB-INF/content 路径下定位物理资源,定位资源的约定是:actionRUL+resultCODE+suffix。当某个逻辑视图找不到对应的视图资源时,Convention会自动视图使用 ActionURL+suffix 作为物理视图资源。如:actions.fore.LoginAction 返回 success 字符串时,Convention 优先考虑使用 WEB-INF/content/fore 目录下的 login-success.jsp 作为视图资源。如果找不到该文件,login.jsp 也可作为对应的视图资源。如果返回 in
7、put 字符串,Convention 会将 WEB-INF/content/fore 里面查找login-input.jsp6.为了看到 struts2 应用里的 Action 等各种资源的影射情况,struts2 提供了 ConfigBrowser 插件。使用方法,将 struts2-config-browser-plugin-2.1.6.jar 文件复制到 struts2 应用的 WEB-INFlib目录中。打开首页地址:http:/localhost:8080/应用名字/config-browser/actionNames.action 这里可以看到 ConfigBrowser 插件的首
8、页。注意:这里不管开发者是否使用 struts.xml 文件进行配置,一样可以看到 struts 的配置信息。7.Action 链的约定如果希望一个 Action 处理结束后不是进入一个视图页面,而是进行另一个 Action 形成的 Action 链,通过 Convention 插件则只需遵守如下三个约定即可。1)第一个 Action 返回的逻辑视图字符串没有对应的视图资源2)第二个 Action 与第一个 Action 处在同一个包下3)第二个 Action 影射的 URL 为:firstActionURL+resultCODE如,第一个 Action 为 OneAction,里面有个方法返
9、回为two,那么就得保证,WEB-INF/content/下没有 one.jsp 或 one-two.jsp 对于第二个 action 它的名字应该是 OneTwoAction,而对应的 url应该是:“one-two.action”注意:由于 Convention 插件根据 Action 和 jsp 页面来动态生成映射的,因此不管是 Acion 的改变,还是 JSP 页面的改变都需要 Convention 插件重新加载映射。那么只要我们为 struts2 应用配置如下两个常量就可以了。属性值3)Action 中还可以指定一个 params 属性, 该属性是一个字符串数组, 用于该 Acion
10、 指定的参数名和参数值。params 属性应遵守如下格式:namel,valuel,name2,value24)Actions 也用于修饰 Action 类里的方法,用于将该方法映射到多个 URL.Actions 用于组织多个Action,因此它可将一个方法映射成多个逻辑 Action。如:packagecom.fun.actions;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.Actions;importcom.fun.service.
11、LoginService;importcom.opensymphony.xwork2.ActionSupport;”value=”true”/是否从包中搜索 Action插件以该常量指定包作为根包publicclassLoginActionextendsActionSupportprivateStringstr;Actions(Action(value=login1,params=str,这是已经注入的了!),Action(value=login2)publicStringlogin()returnstr;Action(value=ggg)publicStringabc()returnabc;
12、publicStringgetStr()returnstr;publicvoidsetStr(Stringstr)this.str=str;我们可以通过/login1.action 访问,而在访问时,str 这个属性已经有值,为 str=这是已经注入的!”返回的视图是 login1-str.jsp当我们用/login2.action 访问时, str 的值为 null。 返回的视图为 login2-str.jsp 而我们通过/ggg.action 调用的是 abc()方法,返回的视图为/ggg-abc.jsp8.与 Result 配置相关的 Annotation1) ResultPathRes
13、ult 和 Results2) Results用于组织多个Result因此它只需指定一个value属性值, 该value属性值为多个Result3)Result相当于 struts.xml 文件中的result/元素的做哟欧诺个。使用Result 必须指定一个 name 属性,相当于resultname=/另外,它还有几个可选的属性。type 相当于resulttype=/指定返回视图资源的类型location 相当于result,./result中间部分,用于指定实际视图位置params:该属性相当于result/元素里多个param./子元素的作用, 用于为该 Result 指定参数值。该
14、属性应满足name1,value1,name2,value2格式 4)Result 有以下两种用法1Action 级的 Result 映射:以Actions 组合多个Action 后修饰的 Action 类。这种 Result 映射对该 Action 里的所有方法都有效。2 方法级 Result 映射:将多个Result 组成数组后作为Action 的 results 属性值。这种 Result 映射仅对被修饰的方法有效。5)ResultPath 则用于修饰包和 Action 类,用于改变被修饰 Action 所对应的物理视图资源的根路径。举例说:默认情况下,Convention 都会到 WE
15、B-INF/content 路径下找物理视图资源,一旦我们使用ResultPath(/abc)修饰 t装Action,系统将回到 abc 目录下寻找物理视图资源。举例:在默认情况下,Convention 都会到 WEB-INF/content 路径下需找物理视图资源,一旦我们使用Res3tPath(/abc)修饰亥Action,系统会到 abc 目录下寻找物理视图资源。9 与包和命名空间相关的 Annotation:Namespace:修夕 AAction 类或其所在的包。该 Annotation 中指定一个 value 属性值,用于指定被修饰的 Action 所在的命名空间Namespace
16、s:修饰 Action 类或其所在的包,用于组合多个NamespaceParentPackage:用于指定被修饰的 Action 所在包的父包。10 异常处理相关的 AnnotationExceptionMappings 用于组织多个ExceptionMapping,因此它只需指定一个 value 属性值,该value 属性值为多个ExceptionMapping。ExceptionMapping 用于定义异常类和物理视图之间的对应关系,也相当于 struts.xml 文件里元素的作用使用时,必须注意以下两个属性:exception:用于指定异常类result:用于指定逻辑视图Exceptio
17、nMpping 有如下两种用法Action 级的异常定义:以ExceptionMappings 组合多个ExceptionMapping 后修 1的 Action 类。这种异常定义对 Action 中的所有方法有效方法级的异常定义:将多个ExceptionMapping 组成数组后作为Action 的 exceptionMappings 属性值,这种异常定义仅对被修饰的方法有效。11.拦截器配置相关的 Annotation与拦截器配置的 Annotation 有InterceptorRef、InterceptorRefs 和DefaultInterceptorRefInterceptorRef
18、s 用于组织多个InterceptorRef,因此它只需要指定一个 value 属性值,该 value属性值为多个InterceptorRefInterceptorRef 用于为指定 Action 引用 lanjieq 或者是拦截器栈。也就相当于 strut.xml 中位于元素内部的子元素的作用。使用InterceptorRefAnnotation 时,必须制定一个 value 属性,用于指定所引用的拦截器或拦截器栈的名字。相当于子元素里 name 属性的作用。IntroductionTheConventionPluginisbundledwithStrutssince2.1andreplac
19、estheZeroConfigplugins.Itprovidesthefollowingfeatures:ActionlocationbypackagenamingconventionsResult(JSP,FreeMarker,etc)locationbynamingconventionsClassnametoURLnamingconventionPackagenametonamespaceconventionSEOcompliantURLs(i.e.my-actionratherthanMyAction)ActionnameoverridesusingannotationsInterce
20、ptoroverridesusingannotationsNamespaceoverridesusingannotationsXWorkpackageoverridesusingannotationsDefaultactionandresulthandling(i.e./productswilltrycom.example.actions.Pducts.Index)TheConventionPluginshouldrequirenoconfigurationtouse.Manyoftheconventionscanbe
21、controlledusingconfigurationpropertiesandmanyoftheclassescanbeextendedoroverridden.CodebehindPluginandSetupInordertousetheConventionplugin,youfirstneedtoaddtheJARfiletotheWEB-INF/libdirectoryofyourapplication(ifyoupackageyouractionsinjarfiles,makesurethatstruts.convention.action.disableJarScanningis
22、settotrue).HelloworldNowthattheConventionpluginhasbeenaddedtoyourapplication,letsstartwithaverysimpleexample.ThisexamplewilluseanactionlessresultthatisidentifiedbytheURL.Bydefault,theConventionpluginassumesthatalloftheresultsarestoredinWEB-INF/content.Thiscanbechangedbysettingthepropertystruts.conve
23、ntion.result.pathintheStrutspropertiesfiletothenewlocation.Dontworryabouttrailingslashes,theConventionpluginhandlesthisforyou.HereisourhelloworldJSP:WEB-INF/content/hello-world.jspHelloworld!IfyoustartTomcat(orwhicheverJ2EEcontaineryouareusing)andtypeinhttp:/localhost:8080/hello-worldintoyourbrowser
24、youshouldgetthisresult:WEB-INF/content/hello-world.jspHelloworld!ThisillustratesthattheConventionpluginwillfindresultsevenwhennoactionexistsanditisallbasedontheURLpassedtoStruts.CodebehindhelloworldLetsexpandonthisexampleandaddacodebehindclass.InordertodothisweneedtoensurethattheConventionpluginisab
25、letofindouractionclasses.Bydefault,theConventionpluginwillfindallactionclassesthatimplementcom.opensymphony.xwork2.ActionorwhosenameendswiththewordActioninspecificpackages.ThesepackagesarelocatedbytheConventionpluginusingasearchmethodology.FirsttheConventionpluginfindspackagesnamedstruts,struts2,act
26、ionoractions.AnypackagesthatmatchthosenamesareconsideredtherootpackagesfortheConventionplugin.Next,thepluginlooksatalloftheclassesinthosepackagesaswellassub-packagesanddeterminesiftheclassesimplementcom.opensymphony.xwork2.ActionoriftheirnameendswithAction(i.e.FooAction).Heresanexampleofafewclassest
27、hattheConventionpluginwillfind:Classescom.example.actions.MainAducts.Display(implementscom.opensymphony.xwork2.Action)pany.details.ShowCompanyDetailsActionEachoftheactionclassesthatthepluginfindswillbeconfiguredtorespondtospecificURLs.TheURLisbasedonthepackagenamethatthec
28、lassisdefinedinandtheclassnameitself.FirsttheplugindeterminesthenamespaceoftheURLusingthepackagenamesbetweentherootpackageandthepackagetheclassisdefinedin.Forourexamplesabove,thenamespaceswouldbe:Namespacescom.example.actions.MainAction-/ducts.Display-/pany.details.ShowCompany
29、DetailsAction-/company/detailsNext,theplugindeterminestheURLoftheresourceusingtheclassname.ItfirstremovesthewordActionfromtheendoftheclassnameandthenconvertscamelcasenamestodashes.InourexamplethefullURLswouldbe:FullURLscom.example.actions.MainAction-/ducts.Display-/product
30、s/pany.details.ShowCompanyDetailsAction-/company/details/show-company-detailsYoucantelltheConventionplugintoignorecertainpackagesusingthepropertystruts.convention.exclude.packages.Youcanalsotelltheplugintousedifferentstringstolocaterootpackagesusingthepropertystruts.convention.package.locators.Final
31、ly,youcantelltheplugintosearchspecificrootpackagesusingthepropertystruts.convention.action.packages.Hereisourcodebehindactionclass:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;publicclassHelloWorldextendsActionSupportprivateStringmessage;public
32、StringgetMessage()returnmessage;publicStringexecute()message=HelloWorld!;returnSUCCESS;IfyoucompilethisclassandplaceitintoyourapplicationintheWEB-INF/classes,theConventionpluginwillfindtheclassandmaptheURL/hello-worldtoit.Next,weneedtoupdateourJSPtoprintoutthemessagewesetupintheactionclass.Hereisthe
33、newJSP:WEB-INF/content/hello-world.jspThemessageis$messageIfstartuptheapplicationserverandopenuphttp:/localhost:8080/hello-worldinourbrowser,weshouldgetthisresult:ResultThemessageisHelloWorld!ResultsandresultcodesTheConventionPluginwillpre-configureallofyouactionclasseswhenStrutsisstarted.Bydefault,
34、thisconfigurationwillalsocontainresultsforanyJSPsthatitcanfindwithintheapplication.TheJSPshaveanadditionalfeaturethatallowsdifferentJSPstobeusedbasedontheresultcodeoftheaction.SinceactionmethodsreturnStringsandtheseStringsaretraditionallyusedtolocateresultsfortheaction,theConventionpluginallowsyouto
35、definedifferentresultsbasedontheresultcode.Buildingonourexamplefromabove,letssaywewanttoprovideadifferentresultiftheresultcodefromouractionistheStringzeroratherthansuccess.First,weupdatetheactionclasstoreturndifferentresultcodes:com.example.actions.HelloWorldpackagecom.example.actions;importcom.open
36、symphony.xwork2.ActionSupport;publicclassHelloWorldextendsActionSupportprivateStringmessage;publicStringgetMessage()returnmessage;publicStringexecute()if(System.currentTimeMillis()%2=0)message=Its0;returnzero;message=Its1;returnSUCCESS;Next,weaddanewJSPtotheapplicationnamedWEB-INF/content/hello-worl
37、d-zero.jspNoticethatthefirstpartofthefilenameisthesameastheURLoftheactionandthelastpartofthenameistheresultcode.Thisistheconventionthatthepluginusestodeterminewhichresultstorender.HereisournewJSP:WEB-INF/content/hello-world.jspTheerrormessageis$messageNow,ifyoucompiletheactionandrestarttheapplicatio
38、n,basedonthecurrenttime,youlleitherseetheresultfromWEB-INF/content/hello-world.jsporWEB-INF/content/hello-world-zero.jsp.Theresulttypeisbasedontheextensionofthefile.Thesupportedextensionsare:jsp,ftl,vm,html,html.ExamplesofActionandResulttoTemplatemapping:URLResultFilethatcouldmatchResultType/hellosu
39、ccess/WEB-INF/content/hello.jspDispatcher/hellosuccess/WEB-INF/content/hello-success.htmDispatcher/hellosuccess/WEB-INF/content/hello.ftlFreeMarker/hello-worldinput/WEB-INF/content/hello-world-input.vmVelocity/test1/test2/helloerror/WEB-INF/content/test/test2/hello-error.htmlDispatcherChainingIfonea
40、ctionreturnsthenameofanotheractioninthesamepackage,theywillbechainedtogether,ifthefirstactiondoesnthaveanyresultdefinedforthatcode.Inthefollowingexample:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.Action;importcom.opensymphony.xwork2.ActionSupport;publiccla
41、ssHelloActionextendsActionSupportAction(foo)publicStringfoo()returnbar;)Action(foo-bar)publicStringbar()returnSUCCESS;)Thefooactionwillbeexecuted,becausenoresultisfound,theConventionplugintriestofindanactionnamedfoo-baronthesamepackagewherefooisdefined.Ifsuchanactionisfound,itwillbeinvokedusingthech
42、ainresult.XWorkpackagesActionsareplacedonacustomXWorkpackagewhichpreventsconflicts.ThenameofthispackageisbasedontheJavapackagetheactionisdefinedin,thenamespacepartoftheURLfortheactionandtheparentXWorkpackagefortheaction.TheparentXWorkpackageisdeterminedbasedonthepropertynamedstruts.convention.defaul
43、t.parent.package(defaultstoconventionDefault),whichisacustomXWorkpackagethatextendsstrutsDefaultThereforethenamingforXWorkpackagesusedbytheConventionpluginareintheform:XWorkpackagenaming#Usingourexamplefromabove,theXWorkpackageforouractionwouldbe:XWorkpackagenamingcom.example.actions#/#conventionDef
44、aultAnnotationreferenceTheConventionpluginusesanumberofdifferentannotationstooverridethedefaultconventionsthatareusedtomapactionstoURLsandlocateresults.Inaddition,youcanmodifytheparentXWorkpackagethatactionsareconfiguredwith.ActionannotationTheConventionpluginallowsactionclassestochangetheURLthatthe
45、yaremappedtousingtheActionannotation.ThisannotationcanalsobeusedinsidetheActionsannotationtoallowmultipleURLstomaptoasingleactionclass.Thisannotationmustbedefinedonactionmethodslikethis:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apa
46、che.struts2.convention.annotation.Action;publicclassHelloWorldextendsActionSupportAction(/different/url)publicStringexecute()returnSUCCESS;OuractionclasswillnowmaptotheURL/different/urlratherthan/hello-world.IfnoResult(seenextsection)isspecified,thenthenamespaceoftheactionwillbeusedasthepathtotheres
47、ult,onourlastexampleitwouldbe/WEB-INF/content/different/url.jsp”.AsinglemethodwithinanactionclasscanalsomaptomultipleURLsusingthelikethis:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;importo
48、rg.apache.struts2.convention.annotation.Actions;Actions(ActionsannotationpublicclassHelloWorldextendsActionSupportAction(/different/url),Action(/another/url)publicStringexecute()returnSUCCESS;)AnotherusageoftheActionorActionsannotationistodefinemultipleactionmethodswithinasingleactionclass,eachofwhi
49、chrespondtoadifferentURL.Hereisanexampleofmultipleactionmethods:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.Actions;publicclassHelloWorldexten
50、dsActionSupportAction(/different/url)publicStringexecute()returnSUCCESS;)Action(url)publicStringdoSomething()returnSUCCESS;)ThepreviousexampledefinesasecondURLthatisnotfullyqualified.ThismeansthatthenamespacefortheURLisdeterminedusingtheJavapackagenameratherthantheActionannotation.Interceptorandinte
51、rceptorstackscanbespecifiedusingtheinterceptorRefsattribute.ThefollowingexampleappliesthevalidationinterceptorandthedefaultStackinterceptorstacktotheaction:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotat
52、ion.Action;importorg.apache.struts2.convention.annotation.Actions;publicclassHelloWorldextendsActionSupportAction(interceptorRefs=InterceptorRef(validation),InterceptorRef(defaultStack)publicStringexecute()returnSUCCESS;Action(url)publicStringdoSomething()returnSUCCESS;Parameterscanbepassedtoresults
53、usingtheparamsattribute.Thevalueofthisattributeisastringarraywithanevennumberofelementsintheformkey0,value0,key1,value1.keyN,valueN.Forexample:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;im
54、portorg.apache.struts2.convention.annotation.Actions;publicclassHelloWorldextendsActionSupportAction(interceptorRefs=InterceptorRef(value=validation,params=programmatic,false,declarative,true)publicStringexecute()returnSUCCESS;Action(url)publicStringdoSomething()returnSUCCESS;Ifinterceptorsarenotspe
55、cified,thedefaultstackisapplied.InterceptorRefannotationInterceptorscanbespecifiedatthemethodlevel,usingtheActionannotationorattheclasslevelusingtheInterceptorRefsannotation.Interceptorsspecifiedattheclasslevelwillbeappliedtoallactionsdefinedonthatclass.Inthefollowingexample:com.example.actions.Hell
56、oWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.Actions;InterceptorRefs(InterceptorRef(interceptor-1InterceptorRef(defaultStack)publicclassHelloWorldextendsAction(value=a
57、ction1,interceptorRefs=InterceptorRef(publicStringexecute()returnSUCCESS;Action(value=action2)publicStringdoSomething()returnSUCCESS;Thefollowinginterceptorswillbeappliedtoactionl:interceptor-1”,allinterceptorsfromdefaultstack,validation.Allinterceptorsfromdefaultstackwillbeappliedtoaction2.),)Actio
58、nSupportvalidation)ResultannotationTheConventionpluginallowsactionclassestodefinedifferentresultsforanaction.Resultsfallintotwocategories,globalandlocal.Globalresultsaresharedacrossallactionsdefinedwithintheactionclass.Theseresultsaredefinedasannotationsontheactionclass.Localresultsapplyonlytotheact
59、ionmethodtheyaredefinedon.Hereisanexampleofthedifferenttypesofresultannotations:com.example.actions.HelloWorldpackagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.Actions;importorg.
60、apache.struts2.convention.annotation.Result;importorg.apache.struts2.convention.annotation.Results;Results(Result(name=failure,location=fail.jsp)publicclassHelloWorldextendsActionSupportAction(value=/different/url,results=Result(name=success,location=,type=redirect)publicStrin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中数学 第五章 三角函数 5.2 三角函数的概念(1)说课稿 新人教A版必修第一册
- 教育行业保密合同标准范本
- 2025年度特种材料采购合同规范范本
- 合同签署·共创辉煌
- 度兼职销售代理合同协议
- 度企业间资金借用合同
- 2025年度广告内容创意策划与执行合同
- 工业厂房租赁合同示例范文
- 2025年度客运站旅客投诉处理服务合同
- 医疗设备供应合同
- 房地产调控政策解读
- 山东省济宁市2025届高三历史一轮复习高考仿真试卷 含答案
- 五年级数学(小数乘法)计算题专项练习及答案
- 产前诊断室护理工作总结
- 6S管理知识培训课件
- 2024-2025学年八年级数学人教版上册寒假作业(综合复习能力提升篇)(含答案)
- 2024年社会工作者(中级)-社会综合能力考试历年真题可打印
- 湖南省长郡中学2023-2024学年高二下学期寒假检测(开学考试)物理 含解析
- 2022届北京市东城区高三语文一模语文试卷讲评课件
- 了不起的狐狸爸爸-全文打印
- JJG646-2006移液器检定规程-(高清现行)
评论
0/150
提交评论