Ajax通讯时,检查Session是否过期
来源:互联网 发布:paxos一致性算法 编辑:程序博客网 时间:2024/05/21 07:52
场景:ajax通讯模式下,客户端校验Session是否过期。
实现:这里用到一个拦截器,检查Session中的用户是否存在
public class LoginFilter extends AbstractInterceptor{private static final long serialVersionUID = 1L;private Logger logger =Logger.getLogger(LoginFilter.class.getName());private static String Error = "errorLogin";private String msg ;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}@Overridepublic String intercept(ActionInvocation arg0) throws Exception {logger.debug("...LoginFilter开始载拦...");//取得请求的action实例ActionContext ctx = arg0.getInvocationContext();//取得提交URIHttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);String actionName = ctx.getContext().getName();if("goAIOPortal".equals(actionName)||"goRealware".equals(actionName)||"loginCheck".equals(actionName)||"loginCh".equals(actionName)||"ukeyloginCheck".equals(actionName)||"loginCheckPass".equals(actionName)) {return arg0.invoke();}//获取sessionlogger.debug("...LoginFilter:判断用户登录...");Map<String,Object> session =ctx.getSession();//异步传输if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { if (session.get("user") == null) {//if(!autoLogin(session,request)){msg = "用户未登录或登录超时,请重新登录!";logger.debug("用户未登录,重新登录!");//request.setAttribute("msg", msg);response.setContentType("text/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter pw = null;try {pw = response.getWriter();pw.write("overdue");} catch (IOException e) {throw new EVoucherException("获取http写入流异常" + e.getMessage());} finally {if (pw != null) {pw.close();}}return null;//}}else{return arg0.invoke();}//同步传输}else{if (session.get("user") == null) {logger.debug("用户未登录,重新登录!");return Action.LOGIN;}else{return arg0.invoke();}}}//自动登陆private boolean autoLogin(Map<String,Object> session, HttpServletRequest request){return false;}}
然后在检测的时候判断执行以下方法就行了。
/** * ajax通讯模式下,客户端校验Session是否过期。 * @param msg */function checkSessionOverdue(msg){if (msg == 'overdue'){alert("登录时间过长,将重新登录!!")window.top.location.href = '/realware/jsp/common/Login.jsp';}}
0 0
- Ajax通讯时,检查Session是否过期
- 检查页面Session是否过期,过期执行相应操作 解决方法
- 判断session是否过期
- 判断session是否过期
- 判断session是否过期
- session是否过期
- Session是否过期失效
- session是否过期
- 判断一个session是否过期
- Ajax请求session过期解决
- AJAX实现防止Session过期
- AJAX实现防止Session过期 .
- session过期ajax请求过滤
- Ajax请求session过期处理
- 调用ajax时session过期的处理方法
- 重写ajax方法实现异步请求session过期时跳转
- ajax请求时session已过期处理方案
- ajax请求时session已过期处理方案
- 让你更好的了解链表-链表解决猴子,小朋友报数问题
- 如何计算视频码率
- .1
- C/C++ STACK &HEAP 区别
- 学习html首先先学习英语
- Ajax通讯时,检查Session是否过期
- iOS距离感应器
- Android BroadcastReceiver 广播总结
- 黑马程序员——09C语言其他数据类型学习
- python的内存管理机制
- Java web学习流程
- 阶乘的0
- Xcode6中如何添加pch文件
- 获取时间戳