Struts中Action的编写及访问

本文介绍了Struts2中Action的三种编写方式,包括POJO类、实现Action接口和继承ActionSupport。推荐使用继承ActionSupport的方式,因为它提供了更多功能。此外,文章还详细讲解了Action的三种访问方式:通过method设置、通配符配置和动态方法访问。在实际开发中,通常采用通配符配置来实现多个请求对应一个Action类中的不同方法。
Struts中Action的编写及访问
Action的写法:3种

Action类编写成POJO的类。
Action类实现一个Action的接口。
Action类继承ActionSupport类(常用的)。


1、Action类编写成POJO的类

什么是POJO类?
就是一个普通的,只默认继承Object的java简单类。

测试代码:

// 第一种方式:普通的POJO类,编写execute()方法
public class HelloAction1 {
    public String execute() {
        System.out.println("HelloAction1的execute()方法执行了。。。");
        return null;
    }
}

2、Action类实现一个Action的接口

测试代码:

import com.opensymphony.xwork2.Action;
/*
    实现的接口中定义了5个逻辑视图常量:
        SUCCESS  :成功
        ERROR    :失败
        LOGIN    :登录出错页面跳转
        INPUT    :表单校验的时候出错
        NONE     :不跳转
 */
// 第二种方式:实现Action接口,实现execute()方法
public class HelloAction2 implements Action {
    @Override
    public String execute() throws Exception {
        System.out.println("HelloAction2的execute()方法执行了。。。");
        return NONE;
    }
}

3、Action类继承ActionSupport类(常用的)

测试代码:

import com.opensymphony.xwork2.ActionSupport;

// 第三种方式:继承ActionSupport类,重写execute()方法
public class HelloAction3 extends ActionSupport {
    @Override
    public String execute() throws Exception {
        System.out.println("HelloAction3的execute()方法。。。");
        return NONE;
    }
}

推荐使用第三种方式编写Action类,继承ActionSupport类。
继承了ActionSupport,就继承了一系列的功能。




Action的访问:3种

通过method设置。
通过通配符的方式进行配置(经常用的)。
通过动态方法访问。

在开发中,并不会一个请求对应一个Action类。
而是一个模块中的多个请求对应一个Action类,一个请求对应类中的某一个方法。


1、通过method设置

(1)JSP代码:

<h3>通过method的方式</h3>
<a href="${ pageContext.request.contextPath }/user_find">查询用户</a>
<a href="${ pageContext.request.contextPath }/user_save">保存用户</a>
<a href="${ pageContext.request.contextPath }/user_update">更新用户</a>
<a href="${ pageContext.request.contextPath }/user_delete">删除用户</a>

(2)struts.xml代码:

<package name="test01" extends="struts-default" namespace="/">
	<action name="user_find" class="com.pipi.struts.test02.UserAction" method="find"></action>
    <action name="user_save" class="com.pipi.struts.test02.UserAction" method="save"></action>
    <action name="user_update" class="com.pipi.struts.test02.UserAction" method="update"></action>
    <action name="user_delete" class="com.pipi.struts.test02.UserAction" method="delete"></action>
</package>

(3)Action类代码:

package com.pipi.struts.test02.UserAction;

import com.opensymphony.xwork2.ActionSupport;

class UserAction extends ActionSupport {
    public String find() {return NONE;}

    public String save() {return NONE;}

    public String update() {return NONE;}

    public String delete() {return NONE;}
}

2、通过通配符的方式进行配置(经常用的)

(1)JSP代码:

<h3>通过*通配符的方式</h3>
<a href="${ pageContext.request.contextPath }/user_find">查询用户</a>
<a href="${ pageContext.request.contextPath }/user_save">保存用户</a>
<a href="${ pageContext.request.contextPath }/user_update">更新用户</a>
<a href="${ pageContext.request.contextPath }/user_delete">删除用户</a>

(2)struts.xml代码:

<package name="test02" extends="struts-default" namespace="/">
    <!-- *表示任意字符,{1}表示第一个 * 号的内容 -->
	<action name="user_*" class="com.pipi.struts.test02.UserAction" method="{1}"></action>
</package>

(3)Action类代码:

package com.pipi.struts.test02.UserAction;

import com.opensymphony.xwork2.ActionSupport;

class UserAction extends ActionSupport {
    public String find() {return NONE;}

    public String save() {return NONE;}

    public String update() {return NONE;}

    public String delete() {return NONE;}
}

甚至还有更加抽象的写法,例如:

<action name="*_*" class="com.pipi.struts.test02.{1}" method="{2}"></action> 

3、通过动态方法访问

(1)JSP代码:

<h3>通过动态方法的方式</h3>
<a href="${ pageContext.request.contextPath }/user!find">查询用户</a>
<a href="${ pageContext.request.contextPath }/user!save">保存用户</a>
<a href="${ pageContext.request.contextPath }/user!update">更新用户</a>
<a href="${ pageContext.request.contextPath }/user!delete">删除用户</a>

(2)struts.xml代码:

<!-- 修改动态方法访问常量值 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />

<package name="test03" extends="struts-default" namespace="/">
   <action name="user" class="com.pipi.struts.test02.UserAction"></action>
</package>

(3)Action类代码:

package com.pipi.struts.test02.UserAction;

import com.opensymphony.xwork2.ActionSupport;

class UserAction extends ActionSupport {
    public String find() {return NONE;}

    public String save() {return NONE;}

    public String update() {return NONE;}

    public String delete() {return NONE;}
}

通常都是:使用通配符的方式进行Action的配置访问。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值