学习使用通配符

7.学习使用通配符

在某些情况下,用户请求非常的简单,不需要系统过多的处理,或者这些请求只是一个简单的转发功能,这个时候做很多的Action和配置更多的struts.xml就会让使得阅读和书写变成了苦力工作。Struts的开发团队当然不想让他的用户把精力放到这上面,所以他们发明一个个叫通配符(我也不知道是不是他们发明的,反正我以前没见过)的东西。下面我们就来学习一下通配符。

通配符用下面4种常用的用法,一一道来

 

1动态改变调用的方法

struts.xml 代码:

<action name="*Action" class = "action.MyAction" method="{1}">

        <result>/Main.jsp</result>

</action>

解释:

* 表示任意

1}表示前面通配符中的第一个*

 

这样定义的Action就不止是一个Action了, 而是一系列的Action,

凡是以Action结尾的都会进入这里,比如aaAction bbActionccAction

在后面的method代表调用的方法 如果请求路径是aaAction.action 则调用MyAction中的aa()方法.

 

2.动态改变Action

struts.xml 代码

<action name="*Emp2000c" class = "action.emp2000c.{1}Emp2000c">

        <result>/Main.jsp</result>

</action>

解释:

凡是以Emp2000c结尾的Action都会进入这里

如果访问的路径是addEmp2000c.action则会进入此action并调用

action.emp2000c. addEmp2000cexecute()方法进行处理

 

3: 动态改变Action和调用方法

Struts.xml代码

<action name="*__*" class = "action.{1}" method="{2}">

        <result>/Main.jsp</result>

</action>

解释:

凡是包含 __ Action都会进入这里

如果访问的是Bom3000c__add.action 则会进入此Action并调用

action.Bom3000c中的add()方法进行处理

 

这样一来 就能减少很多重复的代码了,对于只做转向的action 我们可以这样写:

Struts.xml代码

<action name="*">

    <result >/{1}.jsp</result>

 </action>

 

因为他没有定义class处理的实例所以呢他调用了默认的ActionSupport中的execute来返回success的字符串,即该Action总是直接返回result中指定的JSP资源,JSP资源使用了表达式来生成资源名。所以当请求为A1.action时直接转向了A1.jsp页面, 当请求为A2.action时直接转向了A2.jsp页面。

你可能感兴趣的:(通配符)