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

3854

被折叠的 条评论
为什么被折叠?



