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

标签 java jsp scope struts

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

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

最佳答案

scope 属性只有两个可能的值:requestsession,如 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

What about the "Application" and "page" ?

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

  • 页面 - 只能从创建对象的同一 JSP 页面访问对象;
  • request - 使用请求范围创建的对象可以从服务该请求的任何页面访问;
  • session - 对象可从属于同一 session 的页面访问(跨越同一客户端的多个请求, session 中维护状态,每个客户端都有自己的 session );
  • 应用程序 - 可以从应用程序中的任何页面访问此范围内的对象(所有用户在应用程序范围内共享相同的对象,所有用户共享一个对象)。

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

拥有具有应用范围的表单没有任何意义,因为它将成为每个人的一种表单,我什至想不出它有什么用。因此该领域没有应用值(value)。

现在假设您有页面范围。那将如何运作? Struts 做一个 RequestDispatcher.forward/redirect转到 JSP 文件,如何将 ActionForm 保存在页面的页面范围内,因为它还没有控制权,所以仍然没有页面范围?!就像将值发送到方法,但不是发送方法参数,而是尝试从方法外部直接在方法代码中创建局部变量。

所以只有两个值是有意义的:requestsession。如果你想要额外的东西,你必须自己管理它。

Struts 是一个通用框架,它并没有涵盖所有可以想象或无法想象的情况,它涵盖了大多数正常的用例场景,您将永远需要请求和 session 。

关于java - struts-config.xml 文件的 action 元素中的 scope 属性有多少可用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713822/

相关文章:

java - Android:BitmapFactory:无法解码流:java.io.FileNotFoundException:DataSnapshot { key = image,value = https:/firebasestorage

JavaFX ListCell updateItem 执行两次?

java - 如何复制数据库结果集

java - 如何确定java Web应用程序中资源的路径

c++ - 类(class)尚未宣布但已包括在内?

c++ - 在使用 GLUT 时避免使用全局变量

javascript - 奇怪的 JavaScript 作用域行为

java安全问题

java - Mockito:仅使用局部变量的测试方法

java - Maven Simple Webapp 原型(prototype)不处理 jsp 页面?