struts 拦截器

来源:互联网 发布:点个赞科技 知乎 编辑:程序博客网 时间:2024/05/16 19:22

为全局Action设置自己需要的拦截器

在struts.xml里面定义全局的配置设置

<package name="struts-shop" extends="struts-default">
    <interceptors>

      <interceptor name="loginInterceptor" class="包路径.Logininterceptor"/>
      <interceptor-stack name="myStack">
        <interceptor-ref name="loginInterceptor"/>
       <interceptor-ref name="defaultStack"/>
      </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack"/>(这句是设置所有Action自动调用的拦截器堆栈)

<global-results>

     <result name="login">jsp/login.jsp  </result>

</global-results>
  </package>
/*登陆action配置文件*/

(extends="struts-shop"调用自定义的拦截器)

<package name="home" extends="struts-shop">

       <action name="getUserLoginState" class="包路径.LoginAction" method="getUserLoginState">

           <result name="error"> jsp/login.jsp</result>

           <result name="success">jsp/home/getUser.jsp</result>

      </action>

</package>

/*实现自定义拦截器可实现Interceptor接口或继承AbstractInterceptor*/

interceptor:

/**

*登录拦截器

*/

public class Logininterceptor extends AbstractInterceptor{

           private static final String LOGIN_KEY = "LOGIN";

           @Override

           public String intercept(ActionInvocation arg0) thows Exception{

                   Object action = arg0.getAction();

                     if(action instanceof LoginAction){//执行登录action

                               return arg0.invoke();

                     }

                     Map session = arg0.getInvocationContext().getSession();

                     String login = (String) session.get(LOGIN_KEY);

                    if(login != null && login.length() > 0){//登录后

                              return arg0.invoke();

                    }else{//未登录且不是执行登录操作

                       //跳转到全局<global-results>配置页面

                             return Action.LOGIN;

                       }

            }

}

 

原创粉丝点击