做后台管理系统需要有到登录验证功能,所以今天复习了一下struts2的自定义拦截器,对登录验证,和对权限进行验证
拦截器可以自由扩展,所有的拦截器都实现自Interceptor接口,实现自定义拦截器也要实现Intercepter接口,一般继承AbstractInterceptor抽象类即可。
下面做了个验证用户是否登录的例子:
LoginInterceptor.java:
package interceptor;
import java.util.Map;
import model.Admin;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation invocation) throws Exception {
//通过invocation获取本次调用的上下文
Map<String, Object> session = invocation.getInvocationContext().getSession();
//判断是否登录
Admin admin = (Admin) session.get("nowUser");
if(admin==null){
//如果没有登录,将跳转到登录页面
return "toLogin";
}else {
//如果登录,程序正常运行
return invocation.invoke();
}
}
}
接下来需要配置struts.xml文件:
<interceptors>
<interceptor name="loginInterceptor" class="interceptor.LoginInterceptor"></interceptor>
</interceptors>
<global-results>
<result name="toLogin">/login.html</result>
</global-results>
<action name="toIndex" class="action.LoginAction" method="toIndex">
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<result>/index.html</result>
</action>
配置struts.xml文件是需要注意package里面元素的顺序,参考文章: http://blog.youkuaiyun.com/lc448986375/article/details/8027150