Struts2.0 Action详解:从Struts1.x到Struts2.0的变化

需积分: 9 0 下载量 71 浏览量 更新于2024-09-20 收藏 341KB DOC 举报
"这篇学习笔记主要探讨了Struts2框架的核心概念,特别是与Struts1.x相比,Struts2.0在Action模型上的变化。笔记中提到了在Struts1.x中,Action需要继承特定的接口,而在Struts2.0中则不再有此限制,但通常我们会选择继承ActionSupport类来实现功能。此外,还展示了如何在Struts2中创建一个简单的HelloWorld示例,包括JSP页面和Action类的代码片段。" 在Struts2框架的学习中,了解Action的角色至关重要。Action是业务逻辑处理的主要组件,它负责接收用户请求、处理数据并返回结果到视图层。与Struts1.x相比,Struts2的Action设计更为灵活。在Struts1.x中,Action类需要直接或间接地继承自`org.apache.struts.action.Action`接口,而Struts2.0则打破了这一限制,允许Action类不需继承任何特定类或实现特定接口。这样做的好处是提高了代码的可复用性和可扩展性。 然而,在实际开发中,为了利用Struts2提供的便利功能,如国际化、数据校验等,我们往往会选择继承`com.opensymphony.xwork2.ActionSupport`类。这个类提供了默认的错误处理和结果返回机制,我们只需要重写`execute()`方法来定义我们的业务逻辑。 例如,给出的HelloWorld示例中,Action类`HelloWorld`继承了`ActionSupport`。在`execute()`方法内,我们设置了消息变量`message`的值为"HelloWorld"。这个`message`属性可以通过getter方法`getMessage()`获取。在对应的JSP页面中,使用Struts2标签库的`s:property`标签显示这个消息。 ```java public class HelloWorld extends ActionSupport { private String message; public String getMessage() { return message; } @Override public String execute() { message = "HelloWorld"; return "success"; // 指定返回的结果代码,对应struts.xml配置的result节点 } } ``` 在JSP页面`HelloWorld.jsp`中,`<s:property value="message"/>`标签会显示Action中的`message`属性值: ```jsp <h2><s:property value="message"/></h2> ``` 这个简单的例子展示了Struts2中Action的基本用法,以及如何在Action和视图之间传递数据。通过这种方式,开发者可以构建更复杂的业务逻辑,同时保持MVC架构的清晰分离。在深入学习Struts2时,还需要了解配置文件(struts.xml)的使用、拦截器(Interceptors)的概念、结果类型(Result Types)以及如何处理表单数据和异常等。