Struts2操作对象的生命周期

Struts2操作对象的生命周期,struts2,Struts2,我是Struts2框架的新手,我没有太多时间阅读Struts2的书籍。我只是从YouTube上学的。不管怎样,这是我的问题 假设我的struts.xml如下所示: <struts> <package name="p1" namespace="/" extends="struts-default"> <action name="login" class="org.tutorial.struts2.action.LoginAction">

我是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>
<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>

搜索教程表单
/login.jsp
/searchForm.jsp
让我们谈谈p1包

如果URL是空的,请说[http://localhost:8080/Struts2/login],org.tutorial.struts2.action.LoginAction将被调用,一旦成功,它将被重定向到searchTutorialForm操作标记,该标记将调用searchForm.jsp

因此客户端将看到的URL是[http://localhost:8080/Struts2/searchTutorialForm] (目的不是让客户看到[http://localhost:8080/Struts2/searchForm.jsp])

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

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

<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>
<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>

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

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

重要提示: action tag searchTutorialForm中没有action类-基本上是一个虚拟操作

问题:
1.如何使用第一种方法在LoginAction对象中显示成员变量?
2.值堆栈中LoginAction对象的生命周期是什么

谢谢。

  • 每个请求都会创建操作
  • 重定向导致新请求
  • 因此,以前操作中的对象不再可用
问题是:

  • 您可以将其放入会话中,或将其作为参数包含在重定向中
  • 操作在请求结束时消失