0

私はJavaの初心者です。セッションを終了しないと誰もログインできないことをセッションを検証したいと思います。私はインターセプターを介してこれを行っており、セッションオブジェクトがnullであり、セッションオブジェクトがnullと等しくない場合、アクションを呼び出すactionInvocation.invoke()が機能せず、nullポインター例外を与えるインターセプタークラスを作成しました。

public class AuthenticationInterceptor implements Interceptor{
    private static final long serialVersionUID = 1L; 

    public AuthenticationInterceptor() {
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init() {
    }

    @Override
    public String intercept(ActionInvocation actionInvocation) throws Exception {
        String vString=null;
      try{
            HttpServletRequest request = (HttpServletRequest) actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
             HttpSession session = request.getSession();
             System.out.println(session.getAttribute(Constant.CURRENT_USER));
             UserDTO userDTO=(UserDTO) session.getAttribute(Constant.CURRENT_USER);

        if(userDTO == null){
            System.out.println("userdto=null"+userDTO);
            vString = "login";
        }
        else if(!(userDTO).equals(null)){
                System.out.println("userdto!!!=null"+userDTO.getUserId());

                System.out.println("test...   "+actionInvocation.invoke());
                vString= actionInvocation.invoke();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }return vString;

        }

    private void addActionError(Object action, String message) {
        if (action instanceof ValidationAware) {
            ((ValidationAware) action).addActionError(message);
        }
    }

}

以下はxmlファイルです..

<interceptors>
            <interceptor name="authenticate" class="wm.com.erp.utility.AuthenticationInterceptor"/>

<interceptor-stack name="authenticateStack">
                <interceptor-ref name="authenticate"/>
            </interceptor-stack>
        </interceptors>

        <global-results>
            <result name="login" type="redirect">/index.jsp</result>
        </global-results>
<action name="Assignment" class="wm.com.erp.action.AssignmentAction" method="AssignmentList">
            <interceptor-ref name="authenticateStack"/>

            <result name="success">/Assignment.jsp</result>
            <result name="input">/home.jsp</result>
        </action>

どうぞよろしくお願いいたします。

4

1 に答える 1

0
Map<String,Object> session = invocation.getInvocationContext().getSession();

if(session.isEmpty())
      return Action.ERROR; // session is empty/expired error must be redirect on

return invocation.invoke();

問題がある場合は、この後にこのコードを入力してください。例外のスタック トレースを投稿してください。

于 2013-04-19T09:25:35.180 に答える