私は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>
どうぞよろしくお願いいたします。