当你使用struts2开发一个user实体的"增删改查"应用时,你或许是这样
来配置action
<action name="createUser"
class="com.mycompany.webapp.user.UserAction"
method="create">
<result name="success">/user/userCreate.jsp</result>
<result name="input">/user/userEdit.jsp</result>
<result name="home">/user/home.jsp</result>
</action>
........
其所对应的url可能是这样:/app/createUser.action,/app/retrieveUser.action,
/app/updateUser.action,/app/deleteUser.action
依次类推,一个实体的"增删改查"需要重复4次这样的工作。一个实体类已有如此多配置信息。多个实体又如何呢?
那么我们可以使用struts2的另一个功能:在action标签中的name属性里指定wildcard(通配符)。
struts2提供星号(*)的通配符,以上应用我们可以这样配置:
<action name="*_*" class="com.mycompany.webapp.user.{2}Action" method="{1}">
<result name="success">/{2}/{1}.jsp</result>
<result name="input">/{2}/edit.jsp</result>
<result name="home">/{2}/home.jsp</result>
</action>
其所对应的user实体的url可能是:/app/create_User.action,/app/retrieve_User.action,
/app/update_User.action,/app/delete_User.action
这样的话其它的实体也可以使用这种convention。
请注意在name属性中的分隔符显然是要有的,不然就无法区分两个星号所配置的部分
现在大概来总结一下此应用的convention:
1 action类的命名为:实体名称(大写)+Action
2 action标签中name属性的值为:方法名称+实体名称(大写)
3 实体所对应的jsp文件放在实体名称所对应的目录里面
4 初始jsp页面文件名称定义为"home",
validatation返回页面(也就是input所定义的页面)文件名称定义为edit
5 在success中定义的jsp文件名称为:方法名称