【Strurts框架】第一节Action-通配符
原创
©著作权归作者所有:来自51CTO博客作者光仔December的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用通配符,将配置量降到最小。
在配置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/>
结果读者自己思考一下吧?(动手实践)