day25_Struts2学习笔记_01 (5)

  a.方式一:动作类就是一个POJO(Plain Old Java Object: 原始的老的java对象),是非常简单的JavaBean。示例代码如下:

package com.itheima.web.action;
/**
 * 创建动作类的第一种方式: 
 *      创建一个普通的java类。
 *         它就是一个POJO,是非常简单的javabean。 
 *         原始的 老的 java 对象 
 *         Plain Old Java Object 
 *         POJO类是指没有实现任何接口以及除了Object类以外,没有继承任何父类。
 *         struts2通过获取struts.xml获取到完全的类名,然后底层通过反射,执行方法。
 *         该创建动作类的方式的特点:一点也看不到有struts2的痕迹。
 * 
 * @author cmj
 */

public class Demo1Action {
    public String hello() {
        System.out.println("动作类执行了");
        return "success";
    }
}

  b.方式二:动作类实现com.opensymphony.xwork2.Action接口。示例代码如下:

package com.itheima.web.action;

import com.opensymphony.xwork2.Action;
/**
 * 创建动作类的第二种方式:
 *         动作类实现com.opensymphony.xwork2.Action接口。
 *         创建一个普通类,实现Action接口,实现接口中的方法。
 * 
 *  Action接口中的常量:
 *      常量名     默认常量值           说明
 *      SUCCESS     "success"       当动作执行成功后,前往指定的位置
 *      NONE        "none"          不返回任何结果视图,和   return null; 效果是一样的
 *      ERROR       "error"         当执行动作方法,出现异常后,前往指定的位置
 *      INPUT       "input"         数据回显
 *      LOGIN       "login"         一般用于返回登录页面
 * 
 * @author cmj
 */

public class Demo2Action implements Action {
    public String execute() throws Exception {
        System.out.println("动作类执行了");
        return null;
    }
}

  c.方式三:动作类继承com.opensymphony.xwork2.ActionSupport类。推荐使用方式三。示例代码如下:

package com.itheima.web.action;

import com.opensymphony.xwork2.ActionSupport;
/**
 * 创建动作类的第三种方式:
 *         创建一个动作类,继承com.opensymphony.xwork2.ActionSupport类。推荐使用方式三。
 *         意义:提供了一些基本的功能。比如验证和国际化消息提示等。
 *         我们在开发中采取这种方式,来创建我们的动作类。
 * 
 * @author cmj
 */

public class Demo3Action extends ActionSupport{
    // 当我们在该类中什么都不写,一个动作方法都不提供时:
    // 有一个默认的动作方法:public String execute() throws Exception { return SUCCESS; }
}
4、动作的调用:

a.使用通配符:
  优先级:绝对匹配优先。使用通配符的按照在配置文件中的先后顺序进行匹配的。
b.使用动态方法调用:
  示例代码如下:
  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>
    <!-- 先设置为开发者模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- 开启动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

    <package name="p1" extends="struts-default">
        <!-- 动作方法调用的配置 
        <action name="addUser" class="com.itheima.web.action.UserAction" method="addUser">
            <result name="success">/addUser.jsp</result>
        </action>

        <action name="updateUser" class="com.itheima.web.action.UserAction" method="updateUser">
            <result name="success">/updateUser.jsp</result>
        </action>

        <action name="deleteUser" class="com.itheima.web.action.UserAction" method="deleteUser">
            <result name="success">/deleteUser.jsp</result>
        </action>

        <action name="findUser" class="com.itheima.web.action.UserAction" method="findUser">
            <result name="success">/findUser.jsp</result>
        </action>
        -->


        <!-- 使用通配符,配置动作方法 
             *表示的是动作的名称,当有和动作名称相匹配的时候可以用{出现的位置}来代替
        <action name="*_*" class="com.itheima.web.action.{2}Action" method="{1}{2}">
            <result name="success">/{1}{2}.jsp</result>
        </action>
        -->


        <!-- 动态方法调用的配置 -->
        <action name="user" class="com.itheima.web.action.UserAction">
            <result name="success">/success.jsp</result>
        </action>   
    </package>
</struts>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdpj.html