4

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

パッケージ p1 について話しましょう。

URL が [http://localhost:8080/Struts2/login] の場合、org.tutorial.struts2.action.LoginAction が呼び出され、成功すると、searchForm.jsp を呼び出す searchTutorialForm アクション タグにリダイレクトされます。

したがって、クライアントに表示される URL は [http://localhost:8080/Struts2/searchTutorialForm] です (目的は、クライアントが [http://localhost:8080/Struts2/searchForm.jsp] を表示することではありません)。

現在、タグを使用して searchForm.jsp に表示されている LoginAction にいくつかのメンバー変数があります。ただし、このアプローチを使用すると、オブジェクト 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>

次に、LoginAction オブジェクトのメンバー変数が タグを使用して success.jsp に表示されます (ただし、ユーザーには URL [http://localhost:8080/Struts2/searchForm.jsp] が表示されます)。

基本的に私の意図は、ユーザーが特定の内部ファイルや .jsp や .action などの呼び出しを表示しないようにすることです。

重要な注意: アクション タグ searchTutorialForm にはアクション クラスはありません。基本的にはダミー アクションです。

質問:
1. 最初の方法を使用して LoginAction オブジェクトにメンバー変数を表示するにはどうすればよいですか?
2. Value Stack 内の LoginAction オブジェクトのライフサイクルは?

ありがとう。

4

1 に答える 1

7
  • アクションはリクエストごとに作成されます。
  • リダイレクトにより、新しいリクエストが発生します。
  • そのため、以前のアクションのオブジェクトは使用できなくなりました。

質問:

  1. それをセッションに入れるか、リダイレクトのパラメーターとして含めます。
  2. アクションはリクエストの最後に消えます。
于 2013-01-28T18:00:35.113 に答える