struts2注解使用.docx
returnHabc"publicStringgetStr()returnstr;publicvoidsetStr(Stringstr)this.str三str;我们可以通过loginl.action访问,而在访问时,str这个属性已经有值,为str=”这是已经注入的!”返回的视图是loginsir.jsp当我们用/Iogin2.action访问时,str的值为null.返回的视图为login2-str.jsp而我们通过gggaccion调用的是abc()方法,返回的视图为ggg-abc.j$p9.与Result配置相关的Annotation1)©ResultPathIReSUIt和ReSUItS2)eReSUltS用于组织多个®ReSUlt因此它只需指定一个value属性值,该ValUe属性值为多个RCSUIt3) ReSUIt相当于StrUtS.xml文件中的result元素的做哟欧诺个。运用&Result必需指定个name属性,相当于CreSUItname=""/另外,它还有几个可选的属性. type相当于resulttype="”/指定返回视图资源的类型 location相当于result.rcsult中间部分,用于指定实际视图位.置Action级的异样定义:以©ExcepIionMUPPingS组合多个EXCePtionMapping后修饰的ACtiOn类。这种异样定义对ACtion,的全部方法有效方法级的异样定义:将多个EXCePtiOnHaPPing组成数组后作为Action的GxceptionMappings属性值,,这种异样定义仅时被修饰的方法有效.12.拦常器配量相关的Annotation与拦截涔配置的AnnotaCiOn有包InterCePtorRef、UInterceptorRefs和eDefaultInterccptorRefInterceptorRefs用于组织多个QlnterceptorRef,因此它只须要指定一个value属性值,该value属性(为多个glnterCCPtOrRefInterceptorRef用于为指定Action引用Ianjieq或者是拦截器校。也就相当于strut,xml中位于action./>元素内部的interceptor-ref./>子元素的作用.运用&InterceptorRefAnnotation时,必需制定一个ValUe屈性,JIJF指定所引用的拦截器或拦截器栈的名字。相当于Vinierceplo1.ref./>子元素里name属性的作用。1.官方介绍的地址:.6docsConVention-plugin,html2. struts,xml文件配置.只选择几个重要的常星说明:(1) <constantna三e=*strts.locale*value三*zhCN"><constantname-"struts.i18n.encoding"VaIUe="UTF-8”>struts2.1.6现在只须要一个struts.xml文件就可以f<,以前配struts.Iocale=ZhCN,struts,il8n.enc<>ding=UTI8.应用起动时会报一个警告,说没有配置locale,必须要在StrUtS.properties里面配置才不会报错,现在这个问题已经解决了,全部配置都可以在XmI文件中指定了。(2) <conslanlname="slruts.action,extensionvalue="action,do,>扩展名可以指定为空。这样地址栏比较好看。但也会有个问题,就是一些其他SerVIet映射,如cxf,我们会映射地址为/services/*,现在这个地址也变成SIrUIS2限制葩围的地址了,假如按默认的配置.会报找不到action的错误。解决方法是修改mapper类。这在以后文章中会提到。(3) <constantiiime=vstruts.enable.DynamiCMelhodInVoCaIion”ValUe="true"/<constantname="'struts,enable.SlashesInActionNames*value=*true*>开启动态方法。要实现零配置,就是须要动态方法调用。开启action名称可以有“/”,个恳求地址有多个.StrUtS2就不会再运用类路径扫描的命名空间,只会运用配置的名称.所以既想action名称里运用“/”,又想用SlrUtS2默认搜寻的命名空间,只能自己修改一下convention插件的实现类了。(4) <conslantname="slruls.ui.lheme"YaIUe="simple"/)不用dojo的及struts2困难标签样式的就把主题设置为simple.这样可以不加教多余的模板。(5) <constantname="struts.deNode”VaIUe="truc"><constantname-struts.i18n.reload*value=*true><constantn<une=struts.configuration,xml.reload"YUIUe="true7><constantname,struts.convention,classes,reload*'YaIUe="true”>开启开发者模式,在平常开发时修改action的小im配汽可以不重启,但是修改StrUtS.xml文件还是要重启。修改类的详细内容,debug模式下可以不重启,或是运用javarebcl,这个不在探讨范闱。<constantname-*struts.convention,result,path,rva1ue="/IEBTNF/pages/"/)指定结果页面路径。convention插件会自动在此路径中找寻文件。放到WEBTNF的目的的爱护文件资源,只能通过程序内部跳转才能访问,我们的权限拦被器或其他权限处理只要加到action上就可以了。(7) <constantname=struts.convention,action,suffix"YalUe="Action”/)<constantname="'struts,convention,action,name,lowercase*-value=*true*><constanln<une=,struls.convention,action,name,separator*VaIUe=一个action名字的获得<>比如为HeIIOWorldACtiono依据配置,acIionNtime为helloworld.(8)<constantname="struts.convention,action,disabIeScanning*value=*falseV>是否不扫描类。肯定要设为false,否则COnVentiOn插件不起作用,零配理也没有意义.(9)<constantname=struts.convention,default,parent,package*VaIUe="default"/)设置默认的父包,一股我们都设置一个default包继承自StrUtS-default。大部分类再继承default。假如仃特别的类须要特别的包,只能在action中再指定父包(10) <constantname=",struts,convention.package,locators"ValUe="action”/)<cnslantn<une=""struts,convention,package,locators,disable”VaIUe="false”/)<constantname=*struts.convention,package,locators.basePackage*value=*>确定拽寻包的路径。只要是结尾为action的包都要搜寻。basePackage依据默认不用配置,假如配置,只会找以此配置开头的包。I。CatOrS及locators.basePackage都是一组以逗号分割的字符串。(11) <constantname=,struts.convention,exclude,packages*VaIUe-"org.apache,struts.*,org.apache,struts2.*,org.springframework,web.struts.,org.springframework,web.SlrUlS2.*,org.hibernate.*>解除哪些包不搜寻。按默认配置即可。逗号分割字符串。(12) <constantname-struts.convention,action,includejars"value="”>包括哪些jar包中的action,逗号分割字符串。(13)<constantname-"struts.convention,relative,result,types*ValUe="dispalcher,freenarker,velocity”/)默认返回的结果类型搜寻。按依次先找相关的dispatcher的jsp文件是否存在。然后再找freemarker,再找velocity.(14) <constantname=*struts.convention,result,fIat1.ayout*'ValUe-"true"/假如此值设为true,假如一个action的命名空间为/login,名称为HeIIoWOrIdACtiOn。result返回值是SUCCeSs,默认会找到WEB-INFpagesloginhello_world.jsp(lhoilo_worldsuccess,jsp就找这个文件,连接符“"是在<conslanlname="struts.convention,action,name,separator"VaIUe="一">中配置的)。假如有一个action的result返回值是"error”,就会找/IEBTNF/pageslogin/he11o_wor1d_error.jsp,>假如此值设为false,假如一个action的命名空间为/login,名称为HCIIoWOrIdACtiOn。result返回值是success.默认会找到/WEB-INF/pages/login/hello-world/index,jsp(假如有SUCCeSs.jsp就找这个文件假如有一个aclion的result返回值是“error”,就会找/WEB-INF/PageSlogin/he11o_wor1d/error,jsp。(15) <constantrume=,struls.convention.aclion.maplIMatches"VaIUe="false”/<constantname=*struts.convention,action.CheckImplementsAction*value=*false*><conslantnane=slruts.mapper.alwaysSelecllrulINainespace*value=*faIseV><constantname=struts.convention,redirect,to.slashValUe="true"/)这几个配置没有太多的实际意义,本着最小检查的原则就可以。(16)默认拦截器配置,已经简化了很多,一般不须要C