使用通配符,将配置量降到最小。

在配置Action这样写:

<action name="student*" class="cn.edu.hpu.action.StudentAction" method="{1}">
<result name="success">/student{1}_success.jsp</result>
</action>


{1}与*就是通配符。其中{1}指的是“*”号所代表的字符串,method="{1}"代表的就是使用StudentAction中方法名为{1}(说白了就是student后面的字符串)的方法来获取result。



如:


<a href="<%=basePath %>javaee/studentadd">添加学生</a><br/>
<a href="<%=basePath %>javaee/studentdelete">删除学生</a><br/>


这里的studentadd与studentdelete的student后面的字符串就是所谓的“*”,{1}就分别被赋值为add与delete,即:method="add"和method="delete"。



而StudentAction中只需要部署好这两个方法即可:


package cn.edu.hpu.action;

public class StudentAction {
public String add(){
return "success";
}

public String delete(){
return "success";
}
}


这种方式避免了多次建立action来指定跳转的jsp或html页面(也适用于多result的情况)



注意:一定要遵守“约定优于配置”的原则


(例如,项目经理会约定你们,各种方法的命名规则,必须怎么怎么写)


注意:struts首先匹配最精确的,如果有比通配符更精确的,首先匹配精确的那个。


结语:通配符用好了,可以将配置优化到最简化



一个最简化配置的例子:


struts.xml:


<package name="default" namespace="/javaee" extends="struts-default">  
<action name="*_*" class="cn.edu.hpu.action.{1}Action" method="{2}">
<result name="success">/{1}_{2}_success.jsp</result>
</action>
</package>


TeatherAction:


public class TeatherAction {
public String add(){
return "success";
}

public String delete(){
return "success";
}
}


Teather_add_success.jsp:


<html>
<head>
<title>My JSP 'Teather_add_success.jsp' starting page</title>
</head>

<body>
Teather add success!!!!<br>
</body>
</html>


Teather_delete_success.jsp:


<html>
<head>
<title>My JSP 'Teather_add_success.jsp' starting page</title>
</head>

<body>
Teather delete success!!!!<br>
</body>
</html>


调用:

<a href="<%=basePath %>javaee/Teather_add">添加老师</a><br/>

<a href="<%=basePath %>javaee/Teather_delete">删除老师</a><br/>


结果读者自己思考一下吧?(动手实践)