Struts2基本的疑惑

时间:2010-09-08 07:16:37

标签: java struts2 web-frameworks

我是Struts2的新手....我在下面有一些疑问......

a)在Struts2中,应用程序如何找到struts.xml? (我们没有在web.xml文件中定义struts.xml,这与我们在web.xml文件中定义struts-config.xml的Struts1不同,所以它将如何看到struts.xml文件)

b)为什么我们不为我们的extends ActionSupport类写Action ..我已经看过很多例子而没有扩展到任何其他预定义的Action类..它是如何找到的{{1如果我们不扩展任何其他预定义的动作类或实现Action接口方法,我们的Action类中的方法或execute()方法?

c)在什么情况下我们使用populate()

2 个答案:

答案 0 :(得分:3)

a)如果你没有覆盖配置文件名(web.xml中Struts过滤器的“config”参数),那么它将默认为“struts.xml”。这只是一个硬编码的默认值,因此“按惯例配置”。

b)框架允许“普通的旧Java对象”(POJO)进行操作。只需告诉它要调用哪个方法(在struts.xml中),它将使用反射来查找这样的方法(必须是no-args并返回一个String)并调用它。另一方面,一些接口用于附加功能,例如,如果您的类实现Preparable,那么prepare()方法将在执行之前自动调用(可能类似于Struts1中的“populate”?)

c)扩展ActionSupport是完全可选的,但可以访问一些可能有用的功能,例如某些操作方法的默认实现,如“输入”,方便的国际化方法等。

答案 1 :(得分:3)

+1给Todd的回答。

要b):注意不需要指定方法(尽管可以这样做),默认情况下(“约定”)将调用execute()方法。

要c):扩展ActionSupport是可选的,IMO非常频繁。有时,建议您实施自己的(例如)BaseAction(经常扩展ActionSupport)以分解您的网络应用程序的常用功能,并使所有(或几乎所有)操作扩展它。< / p>