当action中的方法有很多时,那应该怎么调用呢?上次我们提到的UserAction类中只有一个execute方法,如果我们需要增加用户的增删改查方法,如下:

public class UserAction extends ActionSupport{

	...其他略去

	/**
* 添加用户的方法
* @return
* @throws Exception
*/
public String add() throws Exception{
message="添加用户";
return SUCCESS;
} public String del() throws Exception{
message="删除用户";
return SUCCESS;
} public String edit() throws Exception{
message="编辑用户";
return SUCCESS;
}
}

我们保持struts.xml的配置不变,具体见上篇博客。

调用的页面index.jsp就采用action名+!+方法名称+后缀的格式来实现。

 <body>
<a href="user!add.action">添加用户</a><br>
<a href="user!del.action">删除用户</a><br>
<a href="user!edit.action">编辑用户</a> </body>

method属性

这种方法我们就能做到在一个action中动态调用多个方法。但是采用上面的写法容易出错,看着也必将麻烦,那可不可以直接写上具体要调用action中的方法名称呢,比如add.action?这时候我们就需要修改Struts的配置文件了,采用method属性来区分方法名称。

<struts>

	<package name="Struts2_006" extends="struts-default" >

		<action name="add" class="com.struts2.UserAction" method="add">
<result>/add_success.jsp</result>
</action>
<action name="del" class="com.struts2.UserAction" method="del">
<result>/add_success.jsp</result>
</action>
<action name="edit" class="com.struts2.UserAction" method="edit">
<result>/add_success.jsp</result>
</action>
</package> </struts>

通配符

通过method属性虽然可以简化页面的调用,但他使得Struts配置文件中配置了大量的action,而且这些action中的很多内容都是相同的。如何解决呢?引入通配符的用法就可以解决。

现在将Struts.xml文件进行修改

<package name="Struts2_006" extends="struts-default" >
<action name="*user" class="com.struts2.UserAction" method="{1}">
<result>/add_success.jsp</result>
</action> </package>

index.jsp页面也要进行修改

<a href="adduser.action">添加用户</a><br>
<a href="deluser.action">删除用户</a><br>
<a href="edituser.action">编辑用户</a>

比较这两种方式:若不使用通配符,配置文件会十分冗余,但有一个优点就是易于控制。而使用通配符使得配置文件中省去了重复多余的action配置。

最新文章

  1. 扩展欧几里得算法(extgcd)
  2. 使用不同用户对Oracle数据库进行异机恢复,失败,错误:Backup file not found in NetBackup catalog
  3. Oracle 数据库表同步方法浅议
  4. 源码解析Android中View的measure量算过程
  5. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
  6. 表单中Readonly和Disabled的区别(转)
  7. R0:前瞻
  8. WEB网站性能优化
  9. Java经典编程题50道之二十一
  10. read读文件
  11. hadoop3.x.x错误解决
  12. MySQL锁机制&amp;&amp;PHP锁机制,应用在哪些场景中呢?
  13. javaweb获取项目路径的方法
  14. I/O类型
  15. PostgreSQL同步方案
  16. 三、Linux学习之命令基本格式篇
  17. leetcode-744-Find Smallest Letter Greater Than Target(改进的二分查找)
  18. Android中的Layout_weight终极研究
  19. 华硕笔记本开机直接进入bios解决方法
  20. 修改win7远程桌面端口号

热门文章

  1. 原生js瀑布流
  2. Reverse a String-freecodecamp算法题目
  3. Recycler实现瀑布流
  4. CentOS7版本基础使用
  5. Linux 用户 和 组 快速了解
  6. Laravel 5.5搭建(lunix-ubuntu)
  7. 怎么修复网站漏洞 骑士cms的漏洞修复方案
  8. Infinite Maze CodeForces - 196B
  9. JAVA判断时间是否在时间区间内
  10. PHP HashTable总结