二、自定义拦截器

1、编写一个类,实现com.opensymphony.xwork2.interceptor.Interceptor

2、主要实现public String intercept(ActionInvocation invocation) throws Exception{}方法

该方法的返回值就相当于动作的返回值

如果调用了String result = invocation.invoke();得到了动作类的返回的值。

    public String intercept(ActionInvocation invocation) throws Exception {

//判断用户是否登录

HttpSession session = ServletActionContext.getRequest().getSession();

Object obj = session.getAttribute("user");

if(obj==null){

return "login";

}else{

return invocation.invoke();//调用动作方法

}

    }


3、拦截器定义好后,一定要在配置文件中进行注册:

<interceptors> 只是定义拦截器,并没有起作用 

     <interceptor name="permissionInterceptor"

          class="cn.itcast.interceptor.PermissionInterceptor"></interceptor>

</interceptors>

4、配置文件中的动作,要通过

    <interceptor-ref name="permissionInterceptor"></interceptor-ref>使用该拦截器

    

注意:一旦动作中使用了自定义的拦截器,那么默认的就不起作用了。一般应该采用如下的做法:

    <interceptor-ref name="defaultStack"></interceptor-ref>

    <interceptor-ref name="permissionInterceptor"></interceptor-ref>

多个动作类都要使用的话,可以通过package来进行组合。