Struts中Action的编写及访问

tech2025-11-02  2

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的配置访问。


最新回复(0)