通配符(wildcard)

首页:

4a6c5b2d-9a8b-45c2-a1c1-e5e4c2efe57a

当点击添加学生,弹到页面

7f133519-4561-4d9a-a2f4-585f174cea24

应该去struts.xml例找是否有一个package的namespace是“/actions”,并且它的下面是否有一个action的name是“Studentsadd”

1294e77d-3eb5-4f3b-af15-a035e69bf953

发现没有叫“Studentadd”的,只有叫“Student*”的,这个“*”就是通配符,代表所有都能匹配,也就是说只要前面是Students开头的字符串都能被匹配。

之后调用class里的“StudentAction”

8e900ac0-5b3a-4f06-9bf4-46cd8effe5a3

6c2c1cee-d251-41b4-bd18-75af469b7a2f

method="{1}",{1}代表第一个“*”

举例:“**abc**”{1}代表第一个“*”{2}代表第二个“*”,以此类推还有{3}和{4}

然后result是Student{1}_success.jsp,{1}在这里就是add或者delete。对应add或者delete的jsp

66b2659a-536d-40b4-94d4-70bab118a38d

因此,点击添加学生

0e139799-af34-497c-b284-9a5cdbf260e0

点击删除学生

114c85de-2a91-4955-9dbf-a531e90b5c46

如果不使用通配符至少要配置两个result,也可能要配置多个action,使用通配符就简单很多。

“约定优于配置”

45425bd1-b8cc-4454-b782-5e291fc60d02

点击“添加老师”

b944dbe9-3ebc-4814-976c-d6dbf58adf78

7ddef195-fa96-4fdb-9f02-d2995601e18c

匹配的时候第一个“*”匹配的“Teacher”,第二个“*”匹配的是“add”。所以找到了{1}Action也就是TeacherAction。调用{2}也就是add方法。返回的结果是{1}_{2}success.jsp,也就是Teacher_add_success.jsp。

如果action里面有“Student_add”,“Student_*”和“*_*”,优先匹配最精确的,也就是第一个。如果都有“*”,比如第二个和第三个,谁放在前面匹配谁。

posted @ 2018-03-23 19:20  ZOO不是动物园  阅读(712)  评论(0编辑  收藏  举报