当前位置: 首页 > 工具软件 > Invoke > 使用案例 >

actionInvocation.invoke()是什么意思

阎安邦
2023-12-01

关于Struts2的自定义的验证截器

package ch06.struts2.Interceptor;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;


public class AuthenticationInterceptor implements Interceptor  {

  private static final long serialVersionUID = 1L;
 
  public static final String USER_SESSION_KEY = "UserSessionKey";
  
  public void destroy() {}

  public void init() {}


     public String intercept(ActionInvocation actionInvocation) throws Exception {
   //取得Session
         Map session = actionInvocation.getInvocationContext().getSession();
   //从Session里获得登录时保存进session的User类
         String user = (String) session.get(USER_SESSION_KEY);
         //判断用户名是否为空  
         boolean isAuthenticated = (null!=user);
         if (!isAuthenticated) {//如果未通过登录验证

           //下面的那个return怎么能返回登录页面
             return Action.LOGIN;   //返回登录页面  
      
         }else{       
    // 下面的这个actionInvocation.invoke()是什么意思
         return actionInvocation.invoke();//返回验证通过         
         }
     }
}


struts.xml配置自定义的拦截器

<!-- 自定义验证拦截器 -->
     <interceptors>
   <interceptor name="Authentication"  class="ch06.struts2.Interceptor.AuthenticationInterceptor" />     
  </interceptors> 

<action name="Welcome">
            <interceptor-ref name ="Authentication"/>
            <result name="success">welcome.jsp</result>
</action>

 

最佳答案
actionInvocation.invoke() 就是通知struts2接着干下面的事情
比如 调用下一个拦截器 或 执行下一个Action
就等于退出了你自己编写的这个interceptor了
 类似资料: