二、自定义拦截器
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来进行组合。