拦截器类
public class FrontLoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 0;
HttpServletRequest request;
static Logger logger = Logger.getLogger(LoginInterceptor.class);
@Override
public String intercept(ActionInvocation ai) throws Exception {
// allow user to login
String actionName = ai.getInvocationContext().getName();
if (actionName.equals("publicLogin"))
return ai.invoke();
if (actionName.equals("message"))
return ai.invoke();
// check if is user login
Map session = ai.getInvocationContext().getSession();
String memberId = session.get(SessionArgument.MEMBERID) == null ? null
: session.get(SessionArgument.MEMBERID).toString();
String state = session.get(SessionArgument.STATE) == null ? ""
: session.get(SessionArgument.STATE).toString();
// 需要登录才能进入
if (memberId == null)
return "login";
// 账号审核未通过,不允许进入
if (!"1".equals(state)) {
request = ServletContextProvider.getRequest();
request.setAttribute("msg", "你的注册信息尚未审核通过,不能进入会员中心!");
return "msg";
}
return ai.invoke();
}
}
struts.xml配置 将自己写的拦截器配置到interceptors下
<interceptors>
<interceptor name="frontloginInterceptor"
class="com.crigh.interceptor.FrontLoginInterceptor">
</interceptor>
<interceptor-stack name="managementStack">
<interceptor-ref name="frontloginInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>