您的位置:首页 > 其它

actionInvocation.invoke()的作用

2013-06-29 10:46 447 查看
转自:/article/8878542.html

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

[java]
view plaincopyprint?

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配置自定义的拦截器

[html]
view plaincopyprint?

<!-- 自定义验证拦截器 --> <interceptors> <interceptor name="Authentication" class="ch06.struts2.Interceptor.AuthenticationInterceptor" /> </interceptors> <action name="Welcome"> <interceptor-ref name ="Authentication"/> <result name="success">welcome.jsp</result> </action>

<!-- 自定义验证拦截器 -->
<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了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: