本人利用session.invalidate()方法去注销指定用户的session,但之后,由于用户浏览器有缓存,用户还可浏览一些页面,
系统在大部分jsp页面都含有session.getgetAttribute的操作!当用户继续对系统进行操作时(例如点击一些功能按钮跳转到其他页面),这就使得后台大量抛出空指针异常!原想在jsp页面加个判断session是否为null,但发现session不为null。这样所有含有session.getgetAttribute的jsp页面都通不过编译且抛出异常。请问有什么解决方法,或更好的实现此功能的方案。
3条回答 默认 最新
- hecheng_job 2010-12-25 03:03关注
如果用struts2,可以实现他的拦截器
用拦截器拦截所有ACTION请求或部分不拦截
在方法体里实现就行了。
[code="java"]
package com.glf.oa.site.web;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import com.glf.oa.site.business.BusinessAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class AskControl extends AbstractInterceptor {
private static final long serialVersionUID = 1L;public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); String action = invocation.getAction().toString(); String head = action.substring(16); int point = head.indexOf("."); String aName = head.substring(0, point);
// System.out.println(aName);
if (action.indexOf("com.glf.oa.site.login") < 0) {// 首先判断是否是登录界面
if (session.getAttribute("nowUser") == null) {// 再判断用户session是否存在
return "globalLogin";
} else {// 如果存在
// 再开始进行机构权限的判断
int userId = Integer.parseInt(session.getAttribute("nowUser")
.toString());
BusinessAction b = new BusinessAction();
if (b.checkOrganPower(aName, userId)) {
return invocation.invoke();
} else {
return "error";
}
}
} else {
return invocation.invoke();
}
}
}
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 VAE代码如何画混淆矩阵
- ¥15 求遗传算法GAMS代码
- ¥15 雄安新区高光谱数据集的下载网址打不开
- ¥66 android运行时native和graphics内存详细信息获取
- ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
- ¥15 rk3566 Android11 USB摄像头 微信
- ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
- ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
- ¥15 mes系统扫码追溯功能
- ¥40 selenium访问信用中国