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配置的,你也可以改成你自己喜欢的扩展名
为什么我们要为每个方法返回一个String值呢?
根据方法所返回的值,以确定你要做什么事,如下例子
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".
前面提到的方法必需返回一个String值其实是不对的?
定义Action的结果其实有四种方式
- 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。
结果类型
还记得上面的配置中的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>
.....
数据交互(请求表单)
struts2采用了javabean来对数据交互的处理,所以你应当在你的Action中定义getter与setter方法,你可以为你的setter方法指定任何primitive类型的参数而不仅仅是字符串,struts2会自动为你转换类型,如果要让这条规则也适用与自己创建的类,则可以进行相应的配置。另外,struts2提供了一个更复杂的实现,当你的表单属性的名字为aaa.bbb.ccc时,在Action中就会调用getAaa().getBbb().setCcc(...)进行附值
分享到:
相关推荐
9.1 为什么在Struts 2中使用Spring 196 9.1.1 依赖注入能做些什么 197 9.1.2 Spring如何管理对象和注入依赖 199 9.1.3 使用接口隐藏实现 200 9.2 将Spring添加到Struts 2 202 9.2.1 让Spring管理动作、拦截器和结果...
Myeclipse开发struts+hibernate+spring新手入门---环境配置----项目开发示例 Myeclipse开发struts+hibernate+spring小记 开发前准备工作: 1、下载eclipse3.1版本 下载地址: 2、下载Myeclipse插件 下载地址: 3...
基于javaWeb MVC模式,借助struts2框架编写,实现用户简单的注册与登录功能。 1.本demo严格按照MVC的分层模式采用myeclipse编写,可直接运行,服务器为tomcat,数据库为mysql。 2.数据库操作使用c3p0连接池和dbtuils...
开发一个Struts2简单实例 5. struts.xml文件 三. Struts2深入开发 6. 常用<Action>标签配置和使用 7. 常用标签配置和使用 8. <global-results>标签 9. Action类的开发 10. 数据类型转换器 11. 实现...
Namespace、自定义Action、路径问题、通配符、包含模块配置文件、默认Action、接受用户输入、服务器跳转、Action中访问web元素、简单数据校验、调用Action的自定义方法 5struts2国际化 ......... 6 struts2输入校验...
Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务... Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
-- 定义包管理配置的action 继承struts-default.xml中的配置 --> <package name="actions" extends="struts-default"> <!-- 定义Action(login.action) --> <action name="login" class="mypack.UserAction"> <!...
内容: 1、OGNL —— 数据运转的催化剂 2、Result机制,让视图更丰富 3、Struts2配置详解 4、Struts2中的Action 5、Struts2中的参数传递 6、标签库,永恒的争论话题 7、拦截器详解 ...10、在Struts2中使用OGNL
学生信息查询实例,用struts2配置文件,action的实现以及通过action实现前后台的数据传输
01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...
2 将struts2 整合进去, 这次在struts.xml中我们使用通配符的方式配置action。 a 加入支持 : 添加struts2.3.15 必需包 以及 struts json包(ajax要用到),spring整合struts2包,spring web 包,在src目录下建立...
struts1的配置比struts2麻烦很多。不仅要在.xml里写繁多的配置,多数也还要写一个FormBean来和action对应。struts2配置简单。不用继续servlet,任何一个带有方法的类都能当作action来使用。
从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。• 包命名习惯来指定Action位置• 命名习惯制定结果(支持JSP,FreeMarker等)路径• 类名到URL的约定转换• 包名...
为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及“惯例重于配置”原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可...
简单实现struts功能。能够通过配置定义Action,能够把客户端的简单数据类型(String,int)传递给Action并从Action中取出结果值。另有简单的拦截器功能。没积分了,分享一下。哈哈
ajaxt json 调用struts2 action的实例(myeclipse 直接导入运行) 学习点: 1;怎样在页面用ajax调用struts2的action 2;怎样对struts进行配置 3;ajax的运行历程 最简单明了的实例,清晰的帮你弄清上述概念,运行...
9、struts2的Action实现,其中用到了两种方法 (1)UserAction类是比较方便的方法,本系统就只用到了UserAction类 (2)AddUserAction、DeleteUserAction、ViewUserAction是另外一种实现,比较繁琐,可供参考 10、...
有关Struts Action Mapping的配置描述 14 Form-bean元素 15 Action元素 15 Struts高级特性(Struts Advanced Feature) 17 验证 17 使用异常处理声明 19 使用应用模块(Application Modules) 21 把JSP放到...
01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...
2. 配置struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...