1、
一个
Web
应用可能有成百上千个
action
声明
.
可以利用
struts
提供的
通配符映射机制
把多个彼此相似的映射关系简化为一个映射关系
2
、通配符映射规则
– 若找到多个匹配 , 没有通配符的那个将胜出– 若指定的动作不存在 , Struts 将会尝试把这个 URI 与任何一个包含着通配符 * 的动作名及进行匹配– 被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用 . {1} 匹配第一个子串 , {2} 匹配第二个子串 …– {0} 匹配整个 URI– 若 Struts 找到的带有通配符的匹配不止一个 , 则按先后顺序进行 匹配– * 可以匹配零个或多个字符 , 但不包括 / 字符 . 如果想把 / 字符包括在内 , 需要使用 ** . 如果需要对某个字符进行转义 , 需要使用 \.
示例1:
包声明:
<package name="app1" namespace="/app1" extends="struts-default">
<action name="*_add" class="com.elgin.action.UserAction" method="add">
<result >/jsp/user.jsp</result>
</action>
</package>
上面的包声明可以由正确的命名空间和
_add
组成的
URI
来调用
,
包括
:
/app1/book_add.action
/app1/student_add.action
/app1/_add.action
/app1/whatever_add.action
/app1/book_add.action
/app1/student_add.action
/app1/_add.action
/app1/whatever_add.action
示例2:
<package name="app2" namespace="/app2" extends="struts-default">
<action name="Book_add" class="com.elgin.action.Book" method="add">
<result>/jsp/Book.jsp</result>
</action>
<action name="Student_add" class="com.elgin.action.Student" method="add">
<result>/jsp/Student.jsp</result>
</action>
</package>
<!-- 上述配置可改写为如下形式 -->
<package name="app2" namespace="/app2" extends="struts-default">
<action name="*_add" class="com.elgin.action.{1}" method="add">
<result >/jsp/{1}.jsp</result>
</action>
</package>
示例3:
<package name="app3" namespace="/app3" extends="struts-default">
<action name="Book_add" class="com.elgin.action.Book" method="add">
<result>/jsp/Book.jsp</result>
</action>
<action name="Book_delete" class="com.elgin.action.Book" method="delete">
<result>/jsp/Book.jsp</result>
</action>
<action name="Student_add" class="com.elgin.action.Student" method="add">
<result>/jsp/Student.jsp</result>
</action>
<action name="Student_delete" class="com.elgin.action.Student" method="delete">
<result>/jsp/Student.jsp</result>
</action>
</package>
<!-- 上述配置可改写为如下形式 -->
<package name="app2" namespace="/app2" extends="struts-default">
<action name="*_*" class="com.elgin.action.{1}" method="{2}">
<result >/jsp/{1}.jsp</result>
</action>
</package>
示例4:
<!-- 通配符映射 -->
<package name="user" namespace="/" extends="struts-default">
<action name="UserAction-*" class="com.elgin.action.UserAction" method="{1}">
<result name="{1}-success">/success.jsp</result>
</action>
</package>