struts2通配符

struts2通配符 
2010-07-26 19:22

我们新建一个struts2测试工程
假设有这样一个action,ActionTest.java
然后里面实现对用户User的crud,增删改查功能add(),del(),modify(),query(),按照一般的方法,我们可以,在struts.xml中配置4个action
<package name="test1" extends="struts-default">
     <action name="addUser" class="com.action.ActionTest" method="add">
     <result name="success">/User/addUser.jsp</result>
     </action>
     <action name="delUser" class="com.action.ActionTest" method="del">
     <result name="success">/User/delUser.jsp</result>
     </action>
     <action name="modifyUser" class="com.action.ActionTest" method="modify">
     <result name="success">/User/modifyUser.jsp</result>
     </action>
     <action name="queryUser" class="com.action.ActionTest" method="query">
     <result name="success">/User/queryUser.jsp</result>
     </action>
</package>
然后再一个jsp页面中请求这四个action

<body>
User:
    <a href="addUser.action">add</a>
    <a href="delUser.action">del</a>
    <a href="queryUser.action">query</a>
    <a href="modifyUser.action">modify</a>
</body>
这种请求方法很令人纠结,设想一下如果有很多很多action,那配置文件就会变得很大很臃肿。。
有没有更好的办法???
我们注意到如上所示,所有文件都采用统一的命名规范操作+User
所以我们可以找一个通用的符号代替这些操作------通配符* 0-n ,这给我们带来很大的方便
对于这个例子我们可以将struts.xml文件配置如下
<package name="test1" extends="struts-default">
     <action name="*User" class="com.action.ActionTest" method="{1}">
     <result name="success">/User/{1}User.jsp</result>
     </action>
</package>
只需这样就可以满足4个action请求,很方便很强大。。。*表示一个通配符,{1}表示第一个通配符代表的含义
这是一个简单的例子,加入还有一种对象,这里我们可以用Mp3也有add(),del(),modify(),query()功能
和User一样,在页面请求
<body>

User:
    <a href="addUser.action">add</a>
    <a href="delUser.action">del</a>
    <a href="queryUser.action">query</a>
    <a href="modifyUser.action">modify</a>
<br>
<br>
Mp3:
    <a href="addMp3.action">add</a>
    <a href="delMp3.action">del</a>
    <a href="queryMp3.action">query</a>
    <a href="modifyMp3.action">modify</a>
</body>

我们可以仿照User的方法配置Mp3的4个操作的action
<package name="test1" extends="struts-default">
     <action name="*User" class="com.action.ActionTest" method="{1}">
     <result name="success">/User/{1}User.jsp</result>
     </action>
     <action name="*Mp3" class="com.action.ActionTest" method="{1}">
     <result name="success">/Mp3/{1}Mp3.jsp</result>
     </action>
</package>
但是这样看着仍然感觉有点臃肿。。。。。
呵呵,我们可以用两个通配符
不过两个通配符要慎用啊,对这个例子估计一般人都会想到这样配置
<package name="test1" extends="struts-default">
<action name="**" class="com.action.ActionTest" method="{1}">
     <result name="success">/{2}/{1}{2}.jsp</result>
</action>
</package>
这样配置能不能请求成功,我告诉你不能。。。。。不信你自己可以去试一下,两个*在一块很容易引起混乱。。。
正确的配置是中间用特殊符号如_隔开
<package name="test1" extends="struts-default">
<action name="*_*" class="com.action.ActionTest" method="{1}">
     <result name="success">/{2}/{1}{2}.jsp</result>
</action>
</package>

然后页面请求统一改成*_*.action就可以了如下
<body>

User:
    <a href="add_User.action">add</a>
    <a href="del_User.action">del</a>
    <a href="query_User.action">query</a>
    <a href="modify_User.action">modify</a>
<br>
<br>
Mp3:
    <a href="add_Mp3.action">add</a>
    <a href="del_Mp3.action">del</a>
    <a href="query_Mp3.action">query</a>
    <a href="modify_Mp3.action">modify</a>
</body>
由于实训时间有限,对struts2通配符的研究只能皮毛而已
有时间的话,我们可以尝试多个通配符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值