Action中的方法代表业务逻辑,那么一个模块中的多个业务逻辑如何用Action来处理呢?我们有2种办法来处理这个问题:
- 一个Action对应一个业务逻辑,实现方便,但是Action数量多,struts.xml中需要配置的内容也多,这种方法不推荐;
- 一个Action对应多个业务逻辑,例如表的CRUD操作,含有多个业务逻辑,我们只写一个Action来实现,Action的数量没有增加,struts.xml的配置也简单,所以这种方法是我们推荐的做法。
Action中自定义方法的声明和execute方法一样,方法的调用路径为“Action名称!方法名称.action”。
以用户表Userinfo的CRUD操作为例,看一下多方法Action的代码:
package com.wdl.duofangfaAction; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class curdAction extends ActionSupport { public String add() throws Exception{ System.out.println("curdAction..add"); return "success"; } public String updata() throws Exception{ System.out.println("curdAction..updata"); return "success"; } public String delete() throws Exception{ System.out.println("curdAction..delete"); return "success"; } }
struts.xml配置如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="curd" namespace="/curd" extends="struts-default"> <action name="curdaction" class="com.wdl.duofangfaAction.curdAction"> <result name="success">/MyJsp.jsp</result> </action> </package> </struts>
前台页面链接格式 ./namespace/actionname!action类方法名().action
<a href="./curd/curdaction!add.action">add</a><p/> <a href="./curd/curdaction!updata.action">updata</a><p/> <a href="./curd/curdaction!delete.action">delete</a><p/>