2

私はStruts2の初心者です。ログアウト後に破棄できるセッション変数に認証を保存するためにログを記録している間、私はPHPで使用されています。ログイン中にセッション変数を設定し、ログアウト中にそれを破棄するという同じプロセスを Struts2 でどのように実行できるのだろうか。本当にありがとうございました。

更新 (追加の解決策)

有用な回答とコメントに加えて、次のものを使用できます。

session.remove("session_var_name"); // instead of session.clear();

すべてのセッション変数を削除するのではなく、1 つの正確なセッション変数を削除します。皆さん、ありがとうございました。

4

2 に答える 2

4

次のいずれかを実行できます。

public class MyAction extends ActionSupport implements ServletRequestAware
{
    private HttpServletRequest httpServletRequest;

    public void setServletRequest(HttpServletRequest request)
    {
        this.httpServletRequest = request;
    }

    public String login()
    {
        httpServletRequest.getSession(false).setAttribute("key", your_session_object);
        return SUCCESS;
    }

    public String logout()
    {
        httpServletRequest.getSession(false).removeAttribute("key");
        return SUCCESS;
    }
}

public class MyAction extends ActionSupport implements SessionAware
{
    private Map sessionMap;

    public void setSession(Map map)
    {
        this.sessionMap = map;
    }

    public String login()
    {
        sessionMap.put(key, your_session_object);
        return SUCCESS;
    }

    public String logout()
    {
        sessionMap.remove(key);
        return SUCCESS;
    }
}

2 番目の選択肢、つまり実装は、 APISessionAwareから保護されるため、推奨されます。Servlet

于 2012-07-16T15:07:23.077 に答える
0

ログアウトを呼び出すときに Scope Interceptor を使用できます。struts xml 構成で「end」タイプを使用すると、Interceptor はセッション オブジェクトに null を設定します。

<action name="scopea" class="com.mevipro.test.action.ScopeActionA">
    <result name="success" type="dispatcher">/jsp/test.jsp</result>
    <interceptor-ref name="basicStack"/>
    <interceptor-ref name="scope">
        <param name="key">funky</param>
        <param name="session">person</param>
        <param name="type">start</param>
    </interceptor-ref>
</action>
<action name="scopeb" class="com.mevipro.test.action.ScopeActionB">
    <result name="success" type="dispatcher">/jsp/test.jsp</result>
    <interceptor-ref name="scope">
        <param name="key">funky</param>
        <param name="session">person</param>
        <param name="type">end</param>
    </interceptor-ref>
    <interceptor-ref name="basicStack"/>
</action>

「開始」と「終了」を定義する必要があります。開始はセッションでオブジェクトを初期化するときであり、「終了」はオブジェクトを破棄するときです

詳細: https://struts.apache.org/docs/scope-in​​terceptor.html

于 2015-08-13T08:21:46.980 に答える