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

时间:2014-05-29 07:12:12

标签: struts1

我正在学习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映射。

谢谢

1 个答案:

答案 0 :(得分:0)

简单答案:

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

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

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

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


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

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

    所有这些都说,除非你有一个非常令人信服的理由这样做,研究Struts 1是浪费时间。这是EOL'd,没有被推荐用于年的新项目,是用相当古老的风格写的等等。现代Java Web框架很多,很多更容易跟...共事。 Struts 1写得非常长时间,在继承已经失宠之前,注释存在之前,标记接口在整个地方使用之前等等。