struts 中继承ActionSupport类

理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下都会继承 com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法。

由JavaDoc可知,ActionSupport类实现了接口。

com.opensymphony.xwork2.Action。

com.opensymphony.xwork2.LoaleProvider。

com.opensymphony.xwork2.TextProvider。

com.opensymphony.xwork2.Validateable。

com.opensymphony.xwork2.ValidationAware。

com.uwyn.rife.continuations.ContinuableObject。

java.io.Searializable。

java.lang.Cloneable。

例如下例所示:

  1. public class HelloWorld extends ActionSupport  {
  2. private String message;
  3. public String getMessage()  {
  4. return message;
  5. }
  6. public String execute()  {
  7. message = " Hello World, Now is " +
  8. DateFormat.getInstance().format( new Date());
  9. return SUCCESS;
  10. }
  11. }

然后可以配置如下映射:

  1. <package name ="ActionDemo" extends ="struts-default">
  2. <action name ="HelloWorld" class ="tutorial.HelloWorld">
  3. <result> /HelloWorld.jsp</result>
  4. </action>
  5. </package>

在默认情况下,当请求HelloWorld.do发生时,Struts 2会根据struts.xml里的Action映射集(Mapping)实例化tutoiral.HelloWorld类,并调用其execute()方 法。当然,我们可以通过以下两种方法改变这种默认调用,这个功能(Feature)有点类似Struts 1中的LookupDispathAction。

在sturts.xml中新建Action,并指明其调用的方法。

访问Action时,在Action名后加上"!xxx"(xxx为方法名)。

例如我们可以在tutorial/HelloWorld.java中加入以下方法:

  1. public String aliasAction() {
  2. message ="自定义Action调用方法";
  3. return SUCCESS;
  4. }

然后可以在sturts.xml中指定method来设置请求的函数名:

  1. <action name="AliasHelloWorld" class="
  2. tutorial.HelloWorld" method="aliasAction">
  3. <result>/HelloWorld.jsp</result>
  4. </action>

也可以直接在URL地址栏中使用"!method"来设置请求的函数名:

  1. http://localhost:8080/Struts 2Test
  2. /HelloWorld!aliasAction.action

通过上面的两个例子,细心的朋友应该可能会发现 classes/tutorial/HelloWorld.java中Action方法(execute和aliasAction)返回的都是 SUCCESS。这个属性变量笔者并没有定义,所以大家应该会猜到它在ActionSupport或其父类中定义。没错,SUCCESS在接口 com.opensymphony.xwork2.Action中定义,另外同时定义的还有ERROR、INPUT、LOGIN、NONE。

此外,笔者在配置Action时都没有为result定义名字 (name),所以它们默认都为SUCCESS。值得一提的是,Struts 2.0中的result不仅仅是Struts 1.x中Forward的别名,它可以实现除Forward外的很激动人心的功能,如将Action输出到FreeMaker模板、Velocity模 板、JasperReports和使用XSL转换等。这些都过result里的type(类型)属性(Attribute)定义的。另外,你还可以自定义 result类型。

时间: 2024-12-25 16:52:53

struts 中继承ActionSupport类的相关文章

【struts2】继承ActionSupport类

在Struts2中,Action可以不实现任何特殊的接口或者继承特殊的类,仅仅是一个POJO(Plain Old Java Object,简单的Java对象)就可以:也可以实现Xwork2中的Action接口:但是由于Xwork的Action接口非常简单,为程序员提供的帮助有限,因此,在实际开发中,会更多的使用继承ActionSupport类来实现Action的方式,如下所示: import com.opensymphony.xwork2.ActionSupport; public class

python进阶四(类的继承)【4-1 python中继承一个类】

python中继承一个类 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: 1 class Person(object): 2 def __init__(self, name, gender): 3 self.name = name 4 self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: 1 class Student(Person): 2 def __init__(self, n

Java中继承thread类与实现Runnable接口的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. Java代码   package com.threadtest; class MyThread e

Java中继承,类的高级概念的知识点

1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩展父类的属性和方法 C.父类的属性和方法可用于子类 D.设计应用程序变得更加简单 3. 如何判断类具有继承关系? 类与类的关系:  a. has—a(组合关系) b. is—a(继承关系) 4. Java中继承的实现(关键字:extends)   关键字extends出现在类声明时的类名后,exte

Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别

1. Java中线程的创建有两种方式:  (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. 继承thread类 1 package com.threadtest; 2 clas

使用myeclipse开发java,解决java中继承JFrame类出现The type JFrame is not accessible due to restriction的问题

在java中创建窗体,导入了java中的JFrame类,之后会出现错误: Access restriction: The type QName is not accessible due to restriction on required library D:\myeclipse professer2014 可以解决的办法为: Project—>Properties—>选中Java Build Path—>选择Libraries,出现下面界面: 选中窗口中原有的JRE库,点击Remov

SLua 中继承 C# 类接口 Slua.Class 的一个 Bug。

由于目前要把大量的代码移植到 lua 中(真是够虐心的),面向对象肯定少不了,项目的代码都是这么设计的,于是就测试 Slua.Class 接口来扩展 C# 的类,发现有点问题,给作者提交了一个 Issue 和 一个 Pull Request,作者也很快确认并 Merge 了. 问题是这样:当使用 Slua.Class 继承出来的类,实例化出来的所有实例都指向了最后一个实例,导致访问属性都是一样的.比如使用 main.txt 中得一段代码修改测试: -- test inherite class l

Action类一般情况为何要继承ActionSupport

struts2中的action可以继承ActionSupport,也可以不继承ActionSupport.不继承ActionSupport的情况只需要有一个方法,返回String,即可,记住,在继承ActionSupport的情况下,必须有无参构造函数.继承ActionSupport的好处在于:1.能够使用struts预设的返回字符串,如SUCCESS,INPUT等等.2.重写方法,更方便的实现验证.国际化等等功能.3.与struts的功能结合紧密,方便开发. Action接口有: public

Action类为何要继承ActionSupport

Action类为何要继承ActionSupport 理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法.当然我们也可以在写action的时候实现Action接口. Action接口有: public static final java.lang.String SUCCESS