【问题标题】:Why we extend action class in struts 1.3为什么我们在 struts 1.3 中扩展动作类
【发布时间】:2014-05-29 07:12:11
【问题描述】:

我目前正在学习 Struts 1.3!

为什么我们要在 struts 1.3 中扩展 Action 类

public class LoginAction extends Action

当我查看 web.xml 文件时,映射显示

<servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

ActionServlet 类的意义是什么,为什么 ActionServlet 与 Action 映射。

谢谢

【问题讨论】:

    标签: struts1


    【解决方案1】:

    简单的答案:

    1. 因为 Struts 1 就是这样工作的。
    2. 因为您必须以某种方式将请求映射到操作。

    更长的答案:

    1. 在 S1 中,一切都依赖于框架类的子类化。(参见注释)Action 基类实际上只提供了一小部分框架功能(消息传递和资源,主要是),以及一小部分其他非 POJO 框架类,特别是 ActionForm。

    在 Struts(以及许多旧软件中)中,程序是针对实现而不是接口编写的。 Action 是一个类,而不是一个接口。 S1 框架的大部分实现都引用了Action,这意味着为了实现框架方法签名和返回值,您必须子类化Action。

    2. MVC 的一个目标是将请求路由到适当的处理程序。在 S1 中,这由 ActionServlet 处理。它查看请求,并根据 Struts 配置确定哪个操作将处理请求。它(或多或少)充当控制器。


    进一步研究:很大一部分功能和一个主要扩展点位于表面之下,位于the RequestProcessor class。请注意,处理请求的实例化操作需要返回 Action。这意味着请求必须由Action 处理,尽管可以使用任何Action 子类,例如,您自己的操作、DispatchAction 或ForwardAction 等框架操作等。

    我想补充一点,您的问题可以通过阅读 Struts 1 网站和 Internet 上的大量可用信息来回答。由于源是可用的,因此检查和验证针对它的假设也很重要。我可能会建议您查看 Struts 1.2 源代码而不是 1.3,因为添加了一小部分功能,使基础知识变得模糊。

    说了这么多,除非你有非常令人信服的理由这样做,否则学习 Struts 1 是浪费时间。它已经停产,年没有被推荐用于新项目,以相当古老的风格编写等等。现代 Java Web 框架要容易得多,很多跟...共事。 Struts 1 是在很久以前写的,在继承失宠之前,在注释存在之前,在标记接口被到处使用之前,等等。

    【讨论】:

    • 非常感谢您的努力!但对我来说,学习 Java 相关的东西(技术/框架)将有助于我探索 Java 技术的实现。
    • @JayJain 我的意思是学习一些使用当前最佳实践的东西,而不是强迫你编写僵硬、不灵活的代码的东西。
    • 实际上我必须处理现有的应用程序,这些应用程序都在 Struts 1.3 中。
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多