使用struts2未登录,不能操作

1、定义拦截器类:

注意登录的action,登录成功在session存入标记(login)

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
/**
 * 拦截器
 * @author 周六刀
 */
public class LoginInterceptor extends MethodFilterInterceptor {
    private static final long serialVersionUID = 1L;
    @Override
    protected String doIntercept(ActionInvocation invoker) throws Exception {
        // TODO Auto-generated method stub
        // 通过获取session中是否有标记
        Object object = ActionContext.getContext().getSession().get("login");
        if (null == object) {
            // 返回登录页面
            return "loginfail";
        } else {
            invoker.invoke();
        }
        return null;
    }
}
 

  2、自定义拦截器

注意:如果其他package包需要使用拦截器,则继承该拦截器即可!!

拦截器的顺序一定要对(result-type、action、default-action-ref、default-class-ref、default-interceptor-ref、globel-exception-mappingis、globel-results)

<package name="interceptors" extends="struts-default" namespace="/">
        <!-- 自定义个人拦截器 -->
        <interceptors>
            <interceptor name="longinInterceptor"
                class="cn.empsystem.action.LoginInterceptor"></interceptor>
        <!--拦截器栈--> <interceptor-stack name="myStack">
          <!--默认拦截器--> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="longinInterceptor"> <!-- 过滤非拦截的action --> <param name="excludeMethods">stuLogin,schLogin,empLogin,checkEntRegister</param> </interceptor-ref> <!-- 引入默认拦截器 --> </interceptor-stack> </interceptors> <!-- 为当前所有的action配置默认拦截器 --> <default-interceptor-ref name="myStack"></default-interceptor-ref> <!-- 配置全局结果集 --> <global-results> <!-- 跳转到登录页面 --> <result name="loginfail">/index.jsp</result> </global-results> </package>

猜你喜欢

转载自www.cnblogs.com/zzzyiren/p/10328364.html