虽然并没有彻底熟知但是有了一些概念。
1.首先是$.ajaxSetup()使用
$(function(){ $.ajaxSetup({ complete: function(XMLHttpRequest, textStatus) { try { var json = $.parseJSON(XMLHttpRequest.responseText); var notlogin = json.notlogin; if (notlogin) { $(".window-body").dialog("close"); window.parent.location.href = "/manage/welcome/login.html"; return; } } catch(e) {}; } }); })
这个函数可以设置ajax在调用前或者成功后执行一些操作而且是所有其他ajax都会执行,比如上面的在ajax执行完后 执行complete方法检验session是否失效是否跳转如登录页面。
2.spring的拦截器配置了拦截session过期后的操作
public class LoginInterceptor extends HandlerInterceptorAdapter { private static Logger logger = LoggerFactory.getLogger(LoginInterceptor.class.getName()); /** 需要过滤的请求路劲 */ private static final String[] IGNORE_URI = {"/admin/api/login","/admin/api/register","/admin/api/admin"}; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { boolean flag = false; String url = request.getRequestURL().toString(); logger.info("请求url:"+url); for (String s : IGNORE_URI) { if (url.contains(s)) { flag = true; break; } } if (!flag) { HttpSession session = request.getSession(true); // 从session 里面获取用户名的信息 Object obj = session.getAttribute("yhxx"); // 判断如果没有取到用户信息,就跳转到登陆页面,提示用户进行登陆 if (null == obj || "".equals(obj.toString())) //未登录 { logger.info("网页过期,请重新登录!"); //如果是ajax请求响应头会有,x-requested-with if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { response.setHeader("sessionstatus", "timeout");//在响应头设置session状态 } else { response.sendRedirect(request.getContextPath()+"/index.html"); } return false; } else { flag = true; } } return flag; }
3.谷歌浏览器的调试功能,很实用。
4.还有一点就是学习了http和tcp还有点懵懂。
**代码不会用编辑器贴进去**。。。。。一个菜鸟 |