java+struct+2.0,struct 2.0中的Action

有Struts 1.x经验的朋友都知道Action是Struts的核心内容,当然Struts 2.0也不例外。不过,Struts 1.x与Struts 2.0的Action模型很大的区别。

Struts 1.x

Stuts 2.0

接口

必须继承org.apache.struts.action.Action或者其子类

无须继承任何类型或实现任何接口

表单数据

表单数据封装在FormBean中

表单数据包含在Action中,通过Getter和Setter获取

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

@ page contentType

=

"

text/html; charset=UTF-8

"

%>

@ taglib prefix

=

"

s

"

uri

=

"

/struts-tags

"

%>

<

html

>

<

head

>

<

title

>

Hello World!

title

>

head

>

<

body

>

<

h2

><

s:property

value

="message"

/>

h2

>

body

>

html

>

例1 HelloWorld.jsp

0818b9ca8b590ca3270a3433284dd417.png 

package

tutorial;

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png 

import

java.text.DateFormat;

0818b9ca8b590ca3270a3433284dd417.png 

import

java.util.Date;

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png 

import

com.opensymphony.xwork2.ActionSupport;

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png 

public

class

HelloWorld

extends

ActionSupport

{

0818b9ca8b590ca3270a3433284dd417.png private String message;

0818b9ca8b590ca3270a3433284dd417.png    

0818b9ca8b590ca3270a3433284dd417.png public String getMessage(){

0818b9ca8b590ca3270a3433284dd417.png return message;

0818b9ca8b590ca3270a3433284dd417.png    }0818b9ca8b590ca3270a3433284dd417.png    

0818b9ca8b590ca3270a3433284dd417.png    @Override 

0818b9ca8b590ca3270a3433284dd417.png public String execute(){

0818b9ca8b590ca3270a3433284dd417.png        message= " Hello World, Now is" + DateFormat.getInstance().format( new Date());

0818b9ca8b590ca3270a3433284dd417.png return SUCCESS;

0818b9ca8b590ca3270a3433284dd417.png    }0818b9ca8b590ca3270a3433284dd417.png}

例1 classes/tutorial/HelloWorld.java

<

package

name

="ActionDemo"

extends

="struts-default"

>

<

action

name

="HelloWorld"

class

="tutorial.HelloWorld"

>

<

result

>

/HelloWorld.jsp

result

>

action

>

package

>

例1 classes/struts.xml中HelloWorld Action的配置

0818b9ca8b590ca3270a3433284dd417.png 

图1 HelloWorld输出页面

参考JavaDoc,可知

ActionSupport类实现了接口:

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

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

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

实现方法请参考例2: 在classes/tutorial/HelloWorld.java中加入以下方法:

public

String aliasAction() {

message

=

"

自定义Action调用方法

"

;

return

SUCCESS;

}

例2 classes/tutorial/HelloWorld.java代码片段

实现方法一,在classes/sturts.xml中加入下面代码:

<

action

name

="AliasHelloWorld"

class

="tutorial.HelloWorld"

method

="aliasAction"

>

<

result

>

/HelloWorld.jsp

result

>

action

>

例2 classes/struts.xml中AlaisHelloWorld Action的配置

实现方法二,使用

http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action地址来访问HelloWorld Action。

0818b9ca8b590ca3270a3433284dd417.png

图2 自定义Action调用方法页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值