我正在学习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映射。
谢谢
答案 0 :(得分:0)
简单答案:
更长的答案:
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的大量信息来回答您的问题。由于源是可用的,因此检查和验证针对它的假设也很重要。我可能会建议使用Struts 1.2源代码而不是1.3代码,因为它添加了一小部分功能,可以实现基础知识。
所有这些都说,除非你有一个非常令人信服的理由这样做,研究Struts 1是浪费时间。这是EOL'd,没有被推荐用于年的新项目,是用相当古老的风格写的等等。现代Java Web框架很多,很多更容易跟...共事。 Struts 1写得非常长时间,在继承已经失宠之前,注释存在之前,标记接口在整个地方使用之前等等。