在struts.xml中,我们可能对普通的配置使用比较多,什么通配符、结果返回Json格式等,这种不具有普遍性,并不是每一个开发者每一个项目都用到的东西。例如下面这个配置我们使用的比较多:
<package name="finance" extends="struts-default">
<action name="login" class="com.fyw.user.action.LoginAction" method="login">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
这是一个最基本的配置,对于struts.xml的所有配置详解我会后续的文章中进行介绍,这里我们只关注struts.xml中通配符的使用方法,例如:
<package name="finance" extends="struts-default">
<action name="*/*/*" class="com.fyw.{1}.action.{2}Action" method="{3}">
<result name="success">/{3}.jsp</result>
<result name="error">/{0}.jsp</result>
</action>
</package>
当一个没有用过通配符的开发者看到这段配置文件后会一头雾水,我第一次看到时也是这种感觉,下面我来详细介绍下这几个数字的含义。
使用通配符我们可以通过传过来的URL访问路径来确定类的名及方法甚至返回的页面路径及页面名称。
例如:我们传一个order/user/login.do时,第一个和{1}匹配,第二个和{2}皮牌,第三个*和{3}匹配,{0}表示整个请求的url,因此上面的配置文件就变成了我们熟悉的:
<package name="finance" extends="struts-default">
<action name="*/*/*" class="com.fyw.order.action.UserAction" method="{login}">
<result name="success">/login.jsp</result>
<result name="error">/orderuserlogin.jsp</result>
</action>
</package>
注意:使用多个*时候中间一定要有分隔符,一般用”/”或者”_”来表示
通配符的优点:
减少了开发人员的配置工作
缺点:
1、在struts2中使用通配符与否的请求过程是不同的,当用户请求URL后,struts2首先会遍历通配符以外的所有配置,如果找到了对应的URL则直接进入action,如果没有找到才会去 遍历通配符,如果有相匹配的通配符,再进入到相对应的action,所以,使用通配符要比未使用通配符要慢。
2、开发人员要特别小心配置,如果对应不起来或者不清楚对应规则很容易出错