虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。
Apache Struts 2即是之前大家所熟知的WebWork 2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2
Struts 2 英文官方网站:
我们用struts2实现一个简单功能比如就是登录和注册,这两个方法都是在UserAction中处理.而按照通常的状况而言,一个Action中只会有一个execute方法,也就只能解决一个请求(大概看了下Struts,好像其中可以通过在form中加一个hidden元素,然后再在execute方法中用getCommond()的方法来进行判别).不过我在Struts2中没有发现类似的解决办法,该怎么办呢?
遇到这个问题之后,我自己开始没有想明白是什么状况,该怎么解决.于是在网上找了下,找到的方法貌似都不是很简单,要么就很复杂,要么就要涉及一些比较深的知识.后面我在执行这个程序的时候,发现Eclipse提出的一个warning,而正是这个warning给了我很大的提示,让我找到的解决方法.
Warning是这样的:No configuration found for the specified action: 'UserAction.action' in namespace: '/pages/user'. Form action defaulting to 'action' attribute's literal value. 原因就是我在struts.xml中定义的action的name与login.jsp中的form中的action的name不一致,将两个的名字改成相同就好了,不要求以.action结束,如都为:LoginAction,也就是struts.xml中的<action name="LoginAction" class="com.struts2.action.UserAction">,和JSP页面中的<s:form action="LoginAction" method="POST">.
而在struts.xml中定义的action还有一个参数method,既然已经可以根据action的name找到对应的action,那还要这个参数做什么呢?另外,execute在不更改的情况下,也是默认会调用的方法,再结合自己在网上找到的一些资料,我觉得可以尝试一下将struts.xml中的action中的method进行设置.于是就有了下面的两个action的配置:struts.xml中的
<action name="login" class="com.struts2.action.UserAction" method="login">
和JSP页面中的
<s:form action="login" method="POST">. 提交上面的表单form的时候,在struts.xml中找到该form对应的action的方法为login(),于是就到类UserAction中找到该方法并调用.因而也就能够调用UserAction类的login()方法了.
这样上面的问题也就可以解释了:因为两个地方定义的方法的名字不同,所以在点击登录进行login.jsp的时候就会弹出上述提示,但由于struts.xml中只定义(配置)一个action,默认的方法为execute(),故而编译器还是能够找到该方法进行执行.
根据上面的推断,因而可以再添加一个注册页面register.jsp,将其中的表单form定义为:
<s:form action="register" method="POST">,
而将struts.xml增加一个设置:
<action name="register" class="com.struts2.action.UserAction" method="register">.
这样当register.jsp的action请求被拦截器拦截之后通过struts.xml的配置就可以找到UserAction类的register()方法进行相应的处理了,因而也就可以实现一个UserAction中处理多个请求action了.
[转]http://it.chinawin.net/softwaredev/article-545d.html
分享到:
相关推荐
在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...
Action是业务逻辑的载体,每个Action对应一个或多个HTTP请求。ActionMapping则描述了Action与请求URL之间的映射关系,以及Action执行后跳转的页面。 4. **结果类型(Result)** 结果类型定义了Action执行后的跳转...
Struts2是Java Web开发中一个非常流行的MVC框架,它极大地简化了应用程序的构建,提供了强大的动作控制、拦截器、结果映射等功能。在国际化处理方面,Struts2提供了全面的支持,使得开发者能够轻松地为多语言环境的...
- **定义**:Struts 2是基于Struts 1的一个全新版本,它不仅继承了Struts 1的一些优秀特性,而且在很多方面进行了重大的改进和完善。 - **特点**:Struts 2是一个用于开发Java Web应用程序的开源框架,它采用MVC...
以上是对"struts2课件第二天"内容的概括,具体内容会涉及更多的代码示例、实战练习以及对Struts2核心组件的深度解析,帮助开发者熟练掌握这个框架,提高开发效率。在实际学习过程中,应结合实际案例,不断实践,以...
这个功能的实现涉及到了多个技术点,包括Struts2的Action、拦截器、结果类型、以及第三方库Apache Commons Email。 首先,我们需要理解Struts2的核心概念。Struts2框架基于Model-View-Controller(MVC)设计模式,...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建动态网站应用程序。该框架自2005年发布以来,经过多次更新迭代,成为了...
ValueStack是Struts2中一个关键的概念,它是一个对象栈,用于存储Action实例和模型数据。OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,用于在Action和视图之间传递数据。 5. **Struts2配置*...
- 拦截器是Struts2中一种非常重要的机制,用于处理请求前后的一些通用操作,比如验证、转换数据等。 - 示例: ```xml ``` #### 五、创建及访问Action 1. **Action的创建**: - Action类是处理用户请求的...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化、易于维护的Web应用开发方式。"史上最全的Struts2"这个资源显然是为了帮助开发者深入理解和...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,用于构建高效、可扩展的企业级应用程序。官方文档是开发者学习和理解Struts2核心概念、架构以及使用方法的重要参考资料。...
Action的组合允许将复杂的业务逻辑拆分成多个小的Action,提高代码的可读性和可维护性;插件机制则允许开发者轻松扩展Struts2的功能;整合其他框架能更好地利用已有资源,提高开发效率。 总的来说,这个资料包提供...
通过深入学习和分析这些源代码,你可以了解Struts2的运行机制,包括请求的处理流程、Action与视图的交互方式,以及如何利用拦截器增强应用的功能。这对于进一步提升Java Web开发技能,特别是框架应用能力是非常有益...
在这个例子中,`@Controller`是Struts2的自定义注解,表示这是一个处理用户请求的控制器类。`@Namespace`定义了该类的命名空间,`/login`对应URL的路径。`@Action`注解标记了`execute()`方法为处理登录请求的动作,`...
6. **Action上下文(ActionContext)**:ActionContext是Struts2中一个关键的上下文对象,它包含了请求、响应、session、application等与请求相关的数据。 7. **模型驱动(ModelDriven)**:此设计模式允许将Action...
总的来说,Struts2作为一款成熟的Java Web框架,其基础部分涵盖了Action、配置、Interceptor、请求处理流程、视图展现、数据绑定、插件和异常处理等多个方面。理解并掌握这些基础知识,将有助于开发者高效地构建稳定...
1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它处理用户的请求并返回相应的结果。Action类通常继承自`com.opensymphony.xwork2.ActionSupport`或自定义基类,并通过注解或配置文件来指定执行方法。 2...
我们将创建一个简单的用户登录应用,包含一个登录表单和一个处理登录请求的Action。 三、环境配置 1. 安装JDK:确保你的开发环境已经安装了Java Development Kit,并设置了相应的环境变量。 2. IDE:可以选择...
在Struts2中,ThreadLocal被用来存储和管理请求相关的数据,确保在并发环境下每个请求都能正确地访问其独有的数据。 四、Action的实现方式 在“第六讲 action的实现方式.docx”中,你会了解到Struts2支持多种...