struts2中的action-01(简单配置与使用)

struts2中的Action可以是一个普通的POJO的java类,而不用继承或实现特定的接口,只需要遵守像一定的约定就行。下面就是一个Action

class POJOAction {
public String execute() throws Exception {
return "success";
}
}

默认的情况下会执行execute()方法,所以你的Action中必需要有一个execute()方法,方法的返值是我们熟悉的String类型,这个值会在Action的配置文件中得到匹配。你也可以指定执行自己的方法名,只要在配置文件中稍作配置就可以了,但是另忘了为你的方法返回一个String类型的值。下面是在struts.xml简单的配置一个Action:

<action name="hello" class="包名.类名" >
<result>hello.jsp</result>
</action>
name属性指定此Action映射的URL,在这里你可以通过hello.action访问此Action类;
"*.action"的扩展名是通过struts.properties配置的,你也可以改成你自己喜欢的扩展名


[b]为什么我们要为每个方法返回一个String值呢?[/b]
根据方法所返回的值,以确定你要做什么事,如下例子

class HelloAction {
public String execute() throws Exception {
if( hasSayed() ) {
return "success";
} else {
return "error";
}
}
}
配置:
<action name="hello" class="xxx.yyy.HelloAction" >
<result>hello.jsp</result>
<result name="error">error.jsp</result>
</action>
从上面的配置可以看出,result中的name属性对应的就是方法的返回值,当没有为result指定name时,name属性还是存在的,而且默认值为"success".


[b]前面提到的方法必需返回一个String值其实是不对的?[/b]
定义Action的结果其实有四种方式
[list]
[*]Action返回一个字符串,也是最常用的一种(我们前面讲的那种方式)
[*]使用 @Result注解—— action类可以用@Results 和@Result注
解来标注多个不同的结果。Action所返回的字符串需要与所注
解的结果之一相匹配。
[*]方法返回一个 Result类的实例——Action不必一定要返回一个
字符串,它可以返回一个 Result类的实例,该实例应当是已经
配置好可使用的。
[*]使用Code behind插件 ——当使用这个插件的时候,它会将
Action的名字和Action返回的结果字符串进行连接来得到视
板。比如说,如果URL是“/adduser.action”,而Action返回
“success”,那么要渲染的页面就是“/adduser-success.jsp”
更多信息请参见http://struts.apache.org/2.x/docs/codebehind-
plugin.html。
[/list]

[b]结果类型[/b]
还记得上面的配置中的result节点吗,上次我们介绍了它的name属性,这一次要说的是type属性,type也有一个默认的值"dispatcher"-->渲染jsp,更多的结果类型可以在struts-default.xml中的package标签时找到,如下:

<package name="struts-default" abstract="true">
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
<!-- Deprecated name form scheduled for removal in Struts 2.1.0. The camelCase versions are preferred. See ww-1707 -->
<result-type name="redirect-action" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="plaintext" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
.....


[b]数据交互(请求表单)[/b]
struts2采用了javabean来对数据交互的处理,所以你应当在你的Action中定义getter与setter方法,你可以为你的setter方法指定任何primitive类型的参数而不仅仅是字符串,struts2会自动为你转换类型,如果要让这条规则也适用与自己创建的类,则可以进行相应的配置。另外,struts2提供了一个更复杂的实现,当你的表单属性的名字为aaa.bbb.ccc时,在Action中就会调用getAaa().getBbb().setCcc(...)进行附值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值