SSH实现登陆拦截器

/**
 * 登录验证拦截器
 *
 */
@SuppressWarnings("serial")
public class LoginInteceptor implements Interceptor {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

    /**每次访问Action类之前,先执行intercept方法*/
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        //获取当前访问Action的URL
        String actionName = invocation.getProxy().getActionName();
        //如果当前访问Action的URL是"loginAction_login"(根据自己写的来定)表示此时还没有Sesion,需要放行
        if(!"loginAction_login".equals(actionName)){
            //从Session中获取当前用户对象
            Employee employee = SessionContext.get();
            //如果Session不存在,跳转到登录页面
            if(employee==null){
                return "login";//这个login已经在struts.xml的全局结果视图中配置了
            }
        }
        //放行,访问Action类中方法
        return invocation.invoke();
        
    }

}

 

 

struts.xml中相关配置:

<!-- 拦截器配置 -->
        <interceptors>
            <!-- 定义了一个用于拦截器登录的拦截器 -->
            <interceptor name="loginInterceptor" class="cn.itcast.ssh.utils.LoginInteceptor"></interceptor>
            <!-- 定义一个拦截器栈 -->
            <interceptor-stack name="systemStack">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="loginInterceptor" />
            </interceptor-stack>
        </interceptors>
    
          <!-- 定义系统默认拦截器 全局 -->
        <default-interceptor-ref name="systemStack" /> 
        <!-- 全局结果视图 -->
        <global-results>
            <result name="login" type="redirect">
                login.jsp
            </result>
        </global-results>

就这样拦截器就实现了

posted @ 2018-10-27 10:25  Jarbein  阅读(426)  评论(0编辑  收藏  举报