2016-11-24关于jquery ajax 和spring拦截器学到的新知识

虽然并没有彻底熟知但是有了一些概念。

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还有点懵懂。

**代码不会用编辑器贴进去**。。。。。一个菜鸟

你可能感兴趣的:(涨姿势)