日期:2014-05-16  浏览次数:20466 次

刚写的权限拦截器--如果直接用*.jsp访问还不能拦截--希望大家指点指点
public class MyInterceptor2 implements Interceptor {
@Override
public void destroy() {
}
@Override
public void init() {
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("权限拦截----start");
String iv = "";
// 获取响应的方法名
String method = invocation.getProxy().getConfig().getMethodName();
// 获取登录后保存在ActionContext中的信息
User u = (User) invocation.getInvocationContext().getSession().get("user");
// 对权限进行迭代比对是否有该权限
if (u != null) {
if (u.getPower().contains(method)) {// 有权限
System.out.println("有权限---1");
iv = invocation.invoke();
} else {//没有权限
System.out.println("没有权限--2");
iv = "noPower";
}
}else { // if u!=null end//没有登录
System.out.println("没有登录--3");
iv = "noLogin";
}
return iv;
}// intercept method end
}//class end

学习过程中遇到的问题:
1.判断set中是否存在某个权限:之前一直想着用Interator迭代,查了文档才知道set有一个contains()方法可以实现该判断功能。
2.拦截器里的返回值问题:曾经尝试直接返回一个字符串,但没有实现正确的页面显示。经过测验,我认为在拦截器里如果执行了invoke()方法的话,结果页面已经确定了,不可以再在拦截器里修改显示了。