Struts2生命周期的Action对象

yap*_*m01 4 struts2

我是Struts2框架的新手,我没有太多时间阅读任何Struts2书籍.我只是从YouTube上学习它.无论如何,这是我的问题.

据说我的struts.xml如下:

<struts>
<package name="p1" namespace="/" extends="struts-default">
    <action name="login" class="org.tutorial.struts2.action.LoginAction">
        <result name="success"  type="redirect" >searchTutorialForm</result>
        <result name="error">/login.jsp</result>
    </action>
    <action name="searchTutorialForm">
        <result>/searchForm.jsp</result>
    </action>
</package>  
</struts>
Run Code Online (Sandbox Code Playgroud)

让我们来谈谈包p1.

如果URL是说[HTTP://本地主机:8080/Struts2的/登录]时,org.tutorial.struts2.action.LoginAction被调用,并在成功时它就会被重定向到调用searchForm.jsp的searchTutorialForm动作标签.

因此,客户端将看到的网址是[HTTP://本地主机:8080/Struts2的/ searchTutorialForm(目的不是为客户端看到[HTTP://本地主机:8080/Struts2的/ searchForm.jsp])

现在LoginAction中有一些成员变量,它们使用tag在searchForm.jsp中显示.但是使用这种方法它们不会显示,因为我认为对象LoginAction不再在ValueStack中(重定向之后,我认为??).

当然,如果我不使用上述方法,而是按照以下方式:

<struts>
<package name="p1" namespace="/" extends="struts-default">
    <action name="login" class="org.tutorial.struts2.action.LoginAction">
        <result name="success">/searchForm.jsp</result>
        <result name="error">/login.jsp</result>
    </action>
</package>  
</struts>
Run Code Online (Sandbox Code Playgroud)

然后使用标记在success.jsp中显示LoginAction对象中的成员变量(但是然后用户将看到URL [http:// localhost:8080/Struts2/searchForm.jsp])

基本上我的意图是用户不要看到任何特定的内部文件或调用像.jsp或.action.

重要说明:动作标签searchTutorialForm中没有动作类 - 基本上是一个虚拟动作.

问题:
1.如何使用第一种方法在LoginAction对象中显示成员变量?
2. Value Stack中LoginAction对象的生命周期是多少?

谢谢.

Dav*_*ton 7

  • 每个请求创建操作.
  • 重定向会导致新请求.
  • 因此,先前操作中的对象不再可用.

问题:

  1. 您将其放入会话中或将它们作为参数包含在重定向中.
  2. 在请求结束时,操作会消失.