晋江和莆田:struts2.0配置文件、常量配置详解
struts2.0配置文件、常量配置详解
通常struts2加载struts2常量的顺序如下:1.struts-default.xml:该文件保存在struts2-core-2.0.6.jar文件中。
2.struts-plugin.xml:该文件保存在struts2-Xxx-2.0.6.jar等Struts2插件JAR文件中。
3.struts.xml:该文件是Web应用默认的Struts2配置文件。
4.struts.properties:该文件是Web应用默认的Struts2配置文件。
5.web.xml:该文件是Web应用的配置文件。
如果在多个文件中配置了同一个Struts2常量,则后一个文件中的配置的常量值会覆盖前面文件中配置的常量值。
在不同文件中配置常量的方式是不一样的,但不管哪个文件中,配置Struts2常量都要指定两个属性:常量name和常量value。
推荐在struts.xml文件中配置Struts2常量。
此处只加载了前三个配置文件,这是在常量struts.configuration.files中配置的。该属性指定Struts2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,这就是上图中加载的三个配置文件。
Struts2常量的具体用法实例
Xml代码
- version="1.0"encoding="UTF-8"?>
- "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
name="struts.i18n.encoding" value="UTF-8"/> name="struts.serve.static.browserCache" value="false"/> name="struts.configuration.xml.reload" value="true"/> name="struts.devMode" value="true"/> name="struts.ui.theme" value="simple"/> name="struts.objectFactory" value="spring"/> name="struts.locale" value="zh_CN"/> name="struts.i18n.encoding" value="GBK"/> name="struts.objectFactory" value="spring"> name="struts.objectFactory.spring.useClassCache"/> name="struts.objectTypeDeterminer"value="tiger"/> name="struts.multipart.parser" value="cos"/> name="struts.multipart.parser" value="pell"/> name="struts.multipart.parser" value="jakarta"/> name="struts.multipart.saveDir" value="/tmpuploadfiles"/> name="struts.multipart.maxSize" value="2097152"/> name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"/> name="struts.action.extension" value="do"/> name="struts.serve.static.browserCache "value="true"/> name="struts.enable.DynamicMethodInvocation" value="true"/> name="struts.enable.SlashesInActionNames" value="true"/> name="struts.tag.altSyntax" value="true"/> name="struts.configuration.xml.reload" value="true"/> name="struts.devMode" value="true"/> name="struts.i18n.reload" value="false"/> name="struts.ui.theme" value="xhtml"/> name="struts.ui.templateDir" value="template"/> name="struts.ui.templateSuffix" value="ftl"/> name="struts.velocity.configfile" value="velocity.properties"/> name="struts.velocity.contexts" value="...."/> name="struts.velocity.toolboxlocation" value="...."/> name="struts.url.http.port" value="80"/> name="struts.url.https.port" value="443"/> name="struts.url.includeParams" value="get"/> name="struts.custom.i18n.resources" value="application"/> name="struts.freemarker.manager.classname" value="org.apache.struts2.views.freemarker.FreemarkerManager"/> name="struts.freemarker.templatesCache"value="false"/> name="struts.freemarker.wrapper.altMap" value="true"/> name="struts.xslt.nocache"value="false"/> name="struts.configuration.files" value="struts-default.xml,struts-plugin.xml,struts.xml"/> name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
=======================================================
1、在struts2中,表单中提交的action,为什么一定要用xxx.action的形式呢?原因是在default.properties这个资源文件(只读)中是这么定义的。可以去修改它里面的配置。(方法是:在src目录下创建struts.properties文件,然后修改成自己需要的形式即可。),另外,为什么struts2的配置文件名一定要是struts.xml呢?其实这些定义都是在default.properties文件(只读)中配置好的。当然可以找到它,进行修改。(方法是:在src目录下创建struts.properties文件,然后修改成自己需要的形式即可。原因是)
2、如何防止表单中提交的中文,取出后显示是乱码:解决方法:
只需要在struts.xml文件的
当然,也可以在struts.properties或web.xml中进行转码的配置。但是优先级的顺序是:web.xml>struts.properties>struts.xml
在struts.properties(位于src目录下)中配置转码的格式:
struts.i18n.encoding=GBK
在web.xml中配置转码的代码是:在
3、要测试一个action运行的时间(会在控制台输出执行时间)。只需要struts.xml文件中的
下面是对上面代码的引用:
也就是说:如果加上了timer这个属性,就得加上params这个参数来获取表单中的参数。有点类似构造方法的原理
4、struts.xml文件中标签中的method属性,来指定该action调用method属性的值的那个方法。方法可以定义在xxxAction.java文件中。如:struts.xml中配置如下
//表示modify这个方法存在于TestMethod.java这个类中。只要浏览器一请求modify.action,就会自动转到相应的类中并调用相应的mofidy()。当然,标签中的name属性名是可以随意取的。只是在请求时名称要与它一致即可。
//与上面的功能类似
5、在action标签中用通配符映射来匹配:
* 表示0-N个字符,不包括/ 常用
** 表示0-N个字符,包括/
\ 表示转义符
比如:将上面两个action标签合并为一个action标签。如下:
它可以表示任何对User进行操作的acion。都由TestMethod这个类来处理。并且method属性的值,是随着访问的变化而进行变化调用类中相应的方法。跳转到的页面也一样的规律。这种方式,要求取的方法名要有规律。
没有任何通配符的action匹配优先级最高。有通配符时,一律按顺序匹配。