1

Struts 2 を使用して Web アプリケーションを作成しています。その中にログイン ページがあります。ユーザーがユーザー名とパスワードを入力した後にログイン ボタンをクリックすると、資格情報がチェックされ、資格情報が正しいことが判明した場合、セッションが作成され、その属性が設定され、コントロールが WELCOME JSP にリダイレクトされます。

が開かれる前にwelcome.jsp、セッション属性が設定されているかどうかを確認したいと思います。Struts 2でそれを行う方法は?

誰でもインターセプターの概念を明確にすることができますか? アクションが呼び出される前または後に任意の機能を実行するインターセプターを作成することを読みました。WELCOME JSP が呼び出されるたびに、セッションが設定されているかどうかをチェックするインターセプターを作成できますか?

4

4 に答える 4

2
  1. Struts.xml に次のように記述します。

    <interceptors> <interceptor name="loginInterceptor" class="com.mtdc.interceptor.LoginInterceptor"></interceptor> <interceptor-stack name="loginStack"> <interceptor-ref name="loginInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors>

2.セッションを確認したいアクションの後、これを置きます:<interceptor-ref name="loginStack"></interceptor-ref>

3. struts.xml の LoginACtion: `

<action name="login_action" class="com.action.LoginAction">

      <result name="success">/welcome.jsp</result>
      <result name="input">/login.jsp</result>
      <result name="error">/login.jsp</result> 

  </action>

`

4.次に、その make com,interceptor.LoginInterceptor の LOgin インターセプターを定義します。

`

    public String intercept(ActionInvocation invocation) throws Exception {

            Map<String, Object> sessionAttributes = invocation
                    .getInvocationContext().getSession();
            if (sessionAttributes == null
                    || sessionAttributes.get("userName") == null
                    || sessionAttributes.get("userName").equals("")) {

                return "login";
            } else {

                if (!((String) sessionAttributes.get("userName")).equals(null)
                        || !((String) sessionAttributes.get("userName")).equals("")) {

                    return invocation.invoke();
                } else {

                    return "login";
                }
            }
        }

`

[5]。セッションを割り当てる Login Action クラスを作成します。

` 

    public String execute() {

        String result = LOGIN;
        UserLogin userlogin;
        try {
            userlogin = userlogindao.authenticateUser(signin_username, signin_password);
            if (userlogin != null && userlogin.getUsername() != null) {

            session.put("userID", userlogin.getUserId());
            session.put("userName", userlogin.getUsername());


            result = SUCCESS;
            } else {

            result = LOGIN;
            }
        } catch (Exception e) {
            result = LOGIN;


            e.printStackTrace();
        }
        return result;
        }

`

[6]。クリック コール アクション LoginAction のログイン ページの最後のステップです。

于 2013-09-04T14:13:49.677 に答える