一、Struts中默认访问后缀:
1、Struts1中默认访问后缀是*.do
2、Struts2中默认访问后缀是*.action
3、如何修改默认访问后缀:
1)Struts2的.action访问后缀在哪里定义?
Struts-core-2.3.4.1.jar/org.apache.struts/default.properties中的
struts.action.extension=action,,
2)在struts.xml中进行对常量的修改
所有的项目都要使用,是一个全局配置,所以位置应该位于:
<constant name="struts.action.extension" value="action,do,">constant>
4、情况分析
value="action,,"
localhost:8080/struts_02/user_register OK
localhost:8080/struts_02/user_register.action OK
value="action," 或 value="action"
localhost:8080/struts_02/user_register.action OK
value="action,do,"
localhost:8080/struts_02/user_register OK
localhost:8080/struts_02/user_register.do OK
localhost:8080/struts_02/user_register.action OK
value="action,do"
localhost:8080/struts_02/user_register.do OK
localhost:8080/struts_02/user_register.action OK
二、相同访问路径问题
问题产生:
1、Action
2、struts.xml
name="user_*" class="sram.config.UserAction4" method="{1}">
<result name="success">/index.jspresult>
name="user_*" class="sram.config2.UserAction" method="{1}">
<result name="success">/index.jspresult>
3、由于上述情况,所以二者想要访问register方法的访问路径均为:
http://localhost:8080/struts_02/user_register
结果:
当我们访问此路径时,运行情况到底如何?
由此可见,配置在前面的会被配置在后面的覆盖掉
三、Struts中的常量(Struts-core-2.3.4.1.jar/org.apache.struts/default.properties中)
1、详解:
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.action.extension" value="do"/>
<constant name="struts.serve.static.browserCache" value="false"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.multipart.maxSize" value=“10701096"/>
2、应用:动态方法调用(不推荐使用,原因:这种形式,需要对程序结构有所了解,不安全)
1、动态方法调用语法:action name+!+方法名
2、举例: