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(...)进行附值
分享到:
相关推荐
在没有Struts2-Spring-Plugin的情况下,要在Struts2应用中使用Spring,需要手动配置Action类与Spring Bean之间的关联。而有了这个插件,配置过程变得更加简单。以下是Struts2-Spring-Plugin-2.2.1.jar提供的主要功能...
这个插件是Struts2与Dojo Toolkit的桥梁,使得开发者能够轻松地在Struts2应用中利用Dojo的强大功能。 Struts2是一个流行的开源MVC(Model-View-Controller)框架,用于构建Java web应用程序。它提供了良好的架构...
这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以获取到JSON数据并进行进一步处理。 现在我们来详细讨论这两个库在实际应用中的作用: 1. **json-...
Struts2的插件系统使得扩展框架功能变得简单,例如,Spring插件可以方便地将Struts2与Spring框架集成,实现依赖注入。 综上所述,Struts2-core-2.0.12.jar包含了Struts2框架的核心功能,为Java Web开发者提供了高效...
除了Action类,Struts2 Spring Plugin还允许我们在拦截器、结果类型和其他Struts2组件中使用Spring注入。这大大增强了Struts2的应用能力,简化了复杂应用的构建过程。 压缩包中的其他文件如"msbase.jar"、...
在Struts2的Action配置中,可以使用`decorator`结果类型指定装饰器: ```xml <action name="myAction" class="com.example.MyAction"> <result type="decorator">/myLayout_decorator </action> ``` 这里的`/...
2. **配置简单**:只需在struts.xml配置文件中添加相应的配置,就可以启用JSON支持。 3. **性能优化**:通过内置的拦截器,可以控制哪些字段被序列化,提高响应速度。 4. **与AJAX集成**:与jQuery、 Prototype等库...
Struts2 JSON Plugin是Apache Struts框架的一个...通过配置"struts-plugin.xml",使用自定义的TLD标签,以及利用提供的类和接口,开发者可以有效地集成JSON支持到他们的Struts2应用中,提升Web应用的动态性和交互性。
在传统的Struts2应用中,开发者通常需要在`struts.xml`中定义每个Action及其对应的类、方法、结果页面等,而使用此插件后,大部分配置可以通过命名约定自动完成。 具体来说,当使用`struts2-convention-plugin`时,...
这段配置告诉Struts2,除了`.action`扩展名外,还接受`.json`扩展,并且有一个结果类型为`json`的Action,这样当客户端请求以`.json`结尾的URL时,Struts2会返回JSON格式的数据。 总的来说,理解和正确配置这些JAR...
在Eclipse中使用该开发包时,首先需要创建一个新的Web项目,然后将`struts2-blank-2.2.1.war`文件解压缩,将里面的JAR文件拖放到项目的WEB-INF/lib目录。这样做是为了确保Web服务器在运行时能够找到并加载Struts2...
3. **Action类与Result**:在Struts2中,Action类是业务逻辑的载体,它定义了处理用户请求的方法。每个Action可以有多个结果(Result),根据不同的执行情况返回不同的视图。Result可以是简单的页面跳转,也可以是...
4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,允许在JSP页面、Action类和配置文件中方便地访问和操作对象属性。 5. **Freemarker和Velocity模板**:Struts2支持使用这两...
通过学习和实践这些内容,开发者可以深入理解Struts2框架的工作原理,掌握其配置和使用方法,从而在实际项目中更好地应用Struts2,提升开发质量和效率。同时,了解如何在Eclipse中进行Struts2项目的配置和调试,也是...
在2.3版本中,OGNL的使用更加广泛,不仅可以用于Action到视图的数据传递,还可以在拦截器和结果配置中使用。 此外,2.3版本对国际化(i18n)支持进行了优化,提供了一种更简单的方式来管理应用程序中的多语言资源。...
在Struts2中,启动配置与Struts1.x有所不同。不再通过Servlet,而是通过Filter——FilterDispatcher启动。在web.xml中,配置FilterDispatcher并指定其拦截所有的URL请求。FilterDispatcher在初始化时会读取类路径下...
在实际项目中,Struts2可以与其他技术如Hibernate(持久层框架)或Spring(全面的企业级应用框架)结合使用,构建完整的MVC应用。同时,Struts2还提供了丰富的国际化、异常处理和安全特性,以满足复杂的企业级需求。...
在学习过程中,你可以通过阅读`01.pdf`这份文档,了解到更多关于Struts2的基础知识,包括如何创建Action、配置Action、使用拦截器、处理表单提交、实现国际化等。同时,文档可能还会介绍如何集成其他技术,如Spring...
登录验证通常涉及数据校验,Struts2提供了数据校验框架,可以在Action类中使用注解或XML配置文件进行字段级别的校验。例如,我们可以使用`@Valid`注解来启动数据校验,并用`@NotEmpty`注解来确保用户名和密码不能为...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建...在实际开发中,还需要配置Struts2的配置文件(struts.xml),定义Action、拦截器、结果类型等,以及正确地配置web.xml文件以启动Struts2的前端控制器。