程序员

Action编写方式

2017-09-21  本文已影响0人  常威爆打来福

1 action编写的三种方式
(1) 创建普通类,这个不继承任何类,不实现任何接口

public class HelloAction {
   
}

(2) 创建类,实现接口Action

import com.opensymphony.xwork2.Action;

public class UserAction implements Action {
    public String execute() throws Exception {
        return null;
    }
}

(3) 创建类,继承类ActionSupport(最常用)

public class PersonAction extends ActionSupport {
    
}

二 访问action的方法(重点)
1 有三种方式实现
*(1)使用action标签的method属性,在这个属性里面写执行的action的方法

package Method;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Created by pc on 2017/9/21.
 */
public class BookAction extends ActionSupport {
    //添加
    public String add(){
        System.out.println("add........");
        return NONE;
    }
    //修改
    public String update(){
        System.out.println("update.......");
        return  NONE;
    }

}
<?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>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
   <package name="method" extends="struts-default" namespace="/">
        <action name="addAction" class="Method.BookAction" method="add"></action>
        <action name="updateAction" class="Method.BookAction" method="update"></action>
    </package>
</struts>
执行成功

缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action

*(2)使用通配符方式实现(重点)

在action标签里面name属性,name属性值里面写符号 * 表示匹配任意内容

<?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>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <!--通配符方式实现-->
    <package name="method1" extends="struts-default" namespace="/">
        <!--
        name属性值里面写符号
        (1)执行action里面add方法,访问book_add,使用book_* 可以匹配到,*相当于add
        (2)执行action里面的update方法,访问book_update,使用book_* 可以匹配到,*相当于update
        上面两个路径使用book_* 可以匹配到
        -->
        <action name="book_*" class="Method.BookAction" method="{1}">

        </action>

    </package>
</struts>

(3)动态访问实现(不用)
2 演示错误
(1)如果action方法有返回值,在配置文件中没有配置,出现错误

错误

(2)在action里面的方法有返回值,如果有返回值的时候类型必须是String
(3)action里面的方法可以没有返回值,没有返回值的时候,在result标签不需要配置

上一篇 下一篇

猜你喜欢

热点阅读