通配符映射
* 一个 Web应用可能有成百上千个 action 声明. 可以利用 struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系
* 通配符映射规则
> 若找到多个匹配, 没有通配符的那个将胜出
> 若找到多个匹配, 没有通配符的那个将胜出
> 若指定的动作不存在, Struts 将会尝试把这个 URI与任何一个包含着通配符 * 的动作名及进行匹配
> 若 Struts找到的带有通配符的匹配不止一个, 最后一个匹配将胜出
> 被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用. {1} 匹配第一个子串, {2} 匹配第二个子串…
> {0} 匹配整个 URI
> * 可以匹配零个或多个字符, 但不包括/ 字符. 如果想把 / 字符包括在内, 需要使用 **. 如果需要对某个字符进行转义, 需要使用\.
==================================
动态方法调用
* 动态方法调用:通过url 动态调用 Action中的方法
如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法
* 默认情况下,Struts 的动态方法调用处于激活状态, 若想禁用该功能,则可以在struts.xml 文件中添加如下 constant元素:
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
==================================
使用通配符定义action
==================================
全局结果
当多个action中都使用到了相同result,这时我们应该把result定义为全局结果。struts1中提供了全局forward,struts2中也提供了相似功能:
<package ....>
<global-results>
<resultname="message">/message.jsp</result>
</global-results>
</package>
注:局部的会覆盖全局
Struts1中应用范围内action的实例 action是单实例(执行时,现在缓存中查找实例,有用,没有创建新的实例)
Struts2中 应用范围内action的实例,每个请求都会创建一个action实例