struts-config.xml文件的action元素中scope属性可用的值

时间:2011-01-17 13:45:54

标签: java jsp scope struts

“action”元素中“scope”属性可用的值有多少     除了“请求”和“会话”之外的struts-config.xml个文件?

<action name="loginform" path="/bkplogin" scope="?" type="org.springframework.web.struts.DelegatingActionProxy">

1 个答案:

答案 0 :(得分:9)

范围属性只有两个可能的值请求会话,如struts-config的DTD中所述:

<!-- 
The name of a JSP bean scope within which such a form bean may be accessed.
-->
<!ENTITY % RequestScope "(request|session)">
...
...
<!ATTLIST action   scope    %RequestScope;  #IMPLIED>

请在此处查看DTD:
http://struts.apache.org/dtds/struts-config_1_3.dtd

或DTD更人性化的文档:
http://struts.apache.org/1.x/struts-core/dtddoc/struts-config_1_3.dtd#action

  

“申请”和“页面”怎么样?

嗯,JSP页面中对象的范围可以是:

  • page - 只能从创建它的同一个JSP页面中访问对象;
  • 请求 - 可以从提供该请求的任何页面访问使用请求范围创建的对象;
  • 会话 - 可以从属于同一会话的页面访问对象(跨越同一客户端的多个请求,在会话中维护状态,每个客户端都有自己的会话); < / LI>
  • 应用程序 - 可以从应用程序中的任何页面访问此作用域中的对象(所有用户在应用程序范围内共享相同的对象,向所有用户共享一个对象)。

现在,struts-config中的范围指的是创建/查找ActionForm对象的位置。 ActionForm表示客户端HTML表单的服务器对象表示。

使用具有应用范围的表单没有任何意义,因为它将是每个人的一种形式,我甚至无法想到什么是有用的。因此该领域没有应用价值。

现在想象你有页面范围。这将如何运作? Struts执行RequestDispatcher.forward/redirect转到JSP文件,如何将ActionForm保存在仍然没有页面范围的页面范围内,因为它还没有控件?!就像向方法发送值,但不是发送方法参数,而是尝试从方法外部直接在方法的代码中创建局部变量。

因此,只有两个值有意义:请求会话。如果你想要额外的东西,你必须自己管理它。

Struts是一个通用框架,它没有涵盖所有可以想象或难以想象的情况,它涵盖了大多数正常的用例场景,请求和会话就是你所需要的。