最近了解了一下Struts2,先做了个上传文件的例子,感觉还不错,于是趁热打铁,打算认真学习一下,先从基础配置看起吧。英语不过关,搞了老半天才把这个struts.properties给大致了解了。基本上把默认的属性都过了一遍,大概意思有了,具体应用场景还得继续努力。在这些属性中大部分也可以在struts.xml中通过constant元素来配置,已试过的struts.locale、 struts.custom.i18n.resources不能通过constant配置,猜测下面几个也可能无法用constant配置: struts.configuration.files、struts.configuration.xml.reload、 struts.i18n.reload、struts.devMode。
struts.configuration(default:org.apache.struts2.config.DefaultConfiguration)
指定加载Struts 2配置文件的配置文件管理器,值为实现org.apache.struts2.config.Configuration接口的类,实现类需要可以自动加载Struts配置文件。
struts.locale(default:当前虚拟机的local值)
指定当前应用默认的国际化地区信息,如en_US。此属性与struts.custom.i18n.resources实现应用国际化,Struts根据两属性指定值读取相应资源文件,如globalMessages_zh_CN.properties。此属性在struts.xml中通过 constant指定无效,只能在properties文件中指定才能起作用。
struts.i18n.encoding(default:UTF-8)
指定国际化信息内码编码方式,该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。
struts.objectFactory(default:com.opensymphony.xwork2.ObjectFactory)
指定对象工厂类,指定类需是默认类的继承类,支持简写,如spring,设为Spring时需复制struts2-spring-plugin-x-x-x.jar和相应的spring.jar到/WEB-INF/lib目录下。
struts.objectFactory.spring.autoWire(default:name)
指定Spring Bean工厂的装配模式,值分别为name, type, auto和constructor。
name:按照action的属性的名字和Spring里的bean的名字匹配,如果匹配就自动装配;type:按照action的属性的类型,在Spring注册的bean中查找,如果相同就自动装配。这需要在Spring中仅注册了一个此类型的bean;auto:Spring会试图自动监测来找到最好的方法自动装配你的action;constructor;Spring会自动装配bean的构造函数的参数
struts.objectFactory.spring.useClassCache(default:true)
该属性指定整合Spring框架时,是否缓存Bean实例,该属性只允许使用true和false两个属性值。通常不建议修改该属性值。
struts.objectTypeDeterminer(default:tiger)
该属性指定Struts 2的类型检测机制,设置判断Collection和Map的键或值类型的类,其值为 com.opensymphony.xwork2.util.ObjectTypeDeterminer的实现类。通常情况下支持tiger或 notiger两种属性值。其中tiger = com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer,notiger = com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer,前者是后者的继承类。
ObjectTypeDeterminer 检查 Class-conversion.properties 文件中包含的用于表示Map和Collection中包含的对象类型的相关内容 . 对于Collection, 如List, 使用格式 Element_xxx 来指定其中的元素类型, 这里xxx是action或其他对象中的集合属性名称. 对于Map, 需要按照格式 Key_xxx 和 Element_xxx 分别指定key和value的类型.
从WebWork 2.1.x开始, 仍然支持Collection_xxx这样的书写格式, 尽管这种格式已经被声明废弃而且最终将被去除.
struts.multipart.parser(default:jakarta)
值为对应org.apache.struts2.dispatcher.multipart.MultiPartRequest的实现类,设置用来处理 MIME-type使用multipart/form-data方式的HTTP POST请求的解析框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common- fileupload文件上传框架。如果需要使用某种上传框架,需将对应的JAR包引入到应用中,如jakarta,需将commons- fileupload-*.*.jar拷贝到WEB-INF/lib中。
struts.multipart.saveDir(default:javax.servlet.context.tempdir)
该属性指定上传文件的临时保存路径。
struts.multipart.maxSize(default:2097152)
设置文件上传中整个请求内容允许的最大字节数,以byte为单位,可设为-1表示不限制。使用此属性限制上传文件大小时未能结合国际化资源给用户提示,可使用struts.xml的fileUpload拦截器中的maximumSize参数对上传文件进行限制,同时设定国际化资源文件中的 struts.messages.error.file.too.large,可以在上传文件过大时返回错误信息给用户以提示。
struts.custom.properties(default:不启用)
指定加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖struts.properties文件中指定的属性。如果需要加载多个自定义属性文件,多个自定义属性文件的文件名以英文逗号(,)隔开。值如:application, org/apache/struts2/extension/custom。
struts.mapper.class(default:org.apache.struts2.dispatcher.mapper.DefaultActionMapper)
将HTTP 请求映射到指定Action的映射器。默认映射器根据请求的前缀与Action的name属性完成映射。
struts.action.extension(default:action)
与DefaultActionMapper结合使用,该属性指定Http的请求后缀,即所有匹配*.action的请求都由Struts 2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如struts.action.extension=action, jnlp,do。
struts.serve.static(default:true)
当FilterDispatcher设置该属性,该属性设置是否通过JAR文件提供静态内容服务,该属性只支持true和false属性值。如果为真则 Struts通过自身的Jar文件提供静态内容,如果为false,则必须在<context_path>/struts中提供静态内容。
struts.serve.static.browserCache(default:true)
当FilterDispatcher设置该属性,该属性设置浏览器是否缓存静态内容,只有在struts.serve.static=true方能生效。例如,当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。
struts.enable.DynamicMethodInvocation(default:true)
该属性设置是否支持动态方法调用。动态方法调用是指表单元素的action不直接等于某个Action的名字,如Struts1中的 DispatchAction,也就是说一个Action内包含多个请求处理方法。要实现这种请求方式,还有另外两种方法。2、为Action配置 method属性,如<action name="userLogin" class="action.LoginAction" method="login">,就是通过method="login"把每个请求处理方法配置成逻辑Action。3、使用通配符映射 (wildcard mappings)方式,如<action name="user_*" class="action.UserAction" method="{1}">,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式 {1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的 login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
其中第一种和第三种请求处理方式的调用方法是foo!bar.action,也可以能过参数定义(如method:bar),但不能使用action:foo。如 <form method="post" action="userOpt!login.action">。第二种请求处理方式的调用方法同普通请求一样。
struts.enable.SlashesInActionNames(default:false)
该属性设置是否允许在Action名中使用斜线作为调用方式,该属性在使用通配符映射方式作为处理请求方式时使用,如在配置文件中定义为< action name="*/*" method="{2}" class="actions.{1}"> ,则在请求URL中最后使用“/foo/edit”其中foo为参数1,edit为参数2。这是WebWork的处理方式。
struts.tag.altSyntax(default:true)
该属性指定是否允许在标签中使用表达式语法,即是否可以在标签中使用${}语法。
struts.devMode(default:false)
设定是否为struts开发模式。设为true时,可以结合struts.i18n.reload和struts.configuration.xml.reload为true方便开发,且可以在应用出错时显示更多、更友好的出错提示。
struts.i18n.reload(default:false)
该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。开发阶段设为true,以有利于实时调试。但产品阶段需设为false,以提高响应性能。
struts.configuration.xml.reload(default:false)
该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。设置环境同上。
struts.configuration.files(default:struts-default.xml,struts-plugin.xml,struts.xml
)
指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号。
struts.ui.theme(default:xhtml)
指定视图标签默认的视图主题。Theme可以理解为模版,struts ui标签都有与之对应的模版,可以解压struts2-all-2.0.1.jar来看看,里面有template目录,打开xhtml查看struts ui标签对应的模版。theme的主要作用如下:1)统一考虑控件的外观和行为。例如对于文本框,有必填和非必填的,那么我们可以定制必填文本框的模版,在文本框后面带上红色的"*",并且带 required校验。2)统一的布局风格,我们只关注内容而不必关注布局。例如对form,一个应用中有多个查询界面,所有的查询界面都采用同样的form模版,保持统一的风格。 Struts2默认提供了五种主题:Simple,最简单的主题;XHTML,默认主题,使用常用的HTML技巧;CSS XHTML,使用CSS实现的XHTML主题;AJAX,基于XHTML主题,但是同步了AJAX功能。也可以自定义主题:1)在WEB-INF下建立文件夹themes/mytheme,2)配置struts.properties,指定使用的theme (struts.ui.theme = mytheme、struts.ui.templateDir = /WEB-INF/themes),3)编辑.ftl文件。
struts.ui.templateDir(default:template)
指定模板的存放目录。
struts.ui.templateSuffix(default:ftl)
指定模板文件的后缀,取值包括ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。因为Struts2默认使用FreeMarker来编写模板,所以默认属性值是ftl。
struts.velocity.configfile(default:velocity.properties)
指定Velocity框架所需的velocity.properties文件的位置。
struts.velocity.contexts(default:空)
指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。
struts.velocity.toolboxlocation(default:空)
指定Velocity框架的toolbox的位置。
struts.url.http.port(default:80)
指定Web应用所在的监听端口。只有当Struts 2需要生成URL时(例如Url标签),才设定该属性的默认端口。
struts.url.http.port(default:443)
类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。
struts.url.includeParams(default:get)
指定生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。
struts.custom.i18n.resources(default:globalMessages)
指定Struts应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。(不包含.properties后缀)
struts.dispatcher.parametersWorkaround (default:false)
对于某些Java EE服务器(如WebLogic、Orion或OC4J),不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。
struts.freemarker.manager.classname(default:org.apache.struts2.views.freemarker.FreemarkerManager)
指定Struts 2使用的FreeMarker管理器。这是内建的FreeMarker管理器。如果需要使用自定义的管理器,则必须继承FreemarkerManager类。
struts.freemarker.templatesCache(default:false)
是否缓存FreeMarker模板。在不开启本功能进,将模板文件拷贝到WEB_APP/templates下可达到同样的效果。
struts.freemarker.beanwrapperCache(default:false)
是否为基于FreeMarker的BeanWrapper的模型开启缓存
struts.freemarker.wrapper.altMap(default:true)
StrutsBeanWrapper继承于BeansWrapper,加入了对Map对象的处理,这种处理可能会引发一些问题,因此可以将此属性设为true,使处理发生问题时使用默认的BeansWrapper替代。
struts.xslt.nocache(default:false)
指定是否对XSLTResult使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。
struts.mapper.alwaysSelectFullNamespace(default:false)
设定是否一直在最后一个slash之前的任何位置选定namespace。
struts.continuations.package(default:还没搞清楚在哪里用)
设定含有actions的完整连续的package名称。
struts.codebehind.defaultPackage(default:暂且还没搞懂)