zoukankan      html  css  js  c++  java
  • struts2核心配置之Action

    一、实现Action类

    1、POJO实现(Plain Ordinary Java Object 简单的java对象)

    public class User1 {
        public String execute(){
            System.out.println("Action1");
            return "success";
        }
    }

      Action类不继承任何特殊类,不实现任何特殊接口,只要有一个公共的无参的构造函数(默认构造函数即可)和一个execute()方法

      execute()方法要求:public类型,返回值String,方法无参

    2、实现Action接口

    public class User2 implements Action {
        public String execute() throws Exception {
            System.out.println("Action2");
            return "success";
        }   
    }

    Action接口具体代码

    public interface Action {
        //接口中常量字符串
        public static final String SUCCESS="success";
        public static final String NONE="none";
        public static final String ERROR="error";
        public static final String INPUT="input";
        public static final String LOGIN="login";
        
        public String execute() throws Exception;
    }

      常量使用:execute()中return ”success“等同于return SUCCESS

    3、继承ActionSupport类

    public class User3 extends ActionSupport {
       private static final long serialVersionUID=1L; @Override
    public String execute() throws Exception { System.out.println("Action3"); return SUCCESS; } }

      因为ActionSupport类实现了Serializable接口,所以继承的Action类需要声明变量 serialVersionUID

    二、配置Action

    Action元素属性

    属性 说明 是否必须
    name 标识Action,指定Action所处理请求的URL
    class 指定Action对应的实现类
    method 指定请求Action时的调用方法

    如果没有指定class属性值,其默认值为com.opensymphony.xwork2.ActionSupport类,该类使用默认处理方法execute(),ActionSupport类中的execute()方法不会做任何处理,二十直接返回success值。

    如果没有指定method属性,Action调用class的execute()方法。

    三、使用通配符

    <package name="test" namespace="/test" extends="struts-default">
            <action name="ActionTest_*" class="com.test.pojo.TestAction2" method="{1}">
                <result name="hello">/{1}.jsp</result>
                <result name="hi">/{1}.jsp</result>
            </action>
    </package>

    在上述代码中,当客户端发送/test/ActionTest_hello.action这样的请求时,<action>元素的name属性就被设置成ActionTest_hello,method就被设置成hello;,当客户端发送/test/ActionTest_hi.action这样的请求时,<action>元素的name属性就被设置成ActionTest_hi,method就被设置成hi。

    结果:

    其中method的属性值中的数字1匹配表示匹配第一个*。如果定义的Action名称为*_*,class属性为action.{1},method属性值为{2}。如果Action名称设置为*,则可以匹配所有Action。

  • 相关阅读:
    取得system32文件夹下面文件的写入权限
    几个SQL语句(备忘)
    Excel多表合并的宏
    删除系统旧网卡
    Eclipse 迁移到Android studio
    是否使用安全模式启动word
    微信公众平台开发
    delphi安装 Tclientsocket, Tserversocket控件
    win10 Internet Explorer 11 停止工作处理
    java编译出错信息汇总(更新)
  • 原文地址:https://www.cnblogs.com/GG-Bond/p/10505805.html
Copyright © 2011-2022 走看看