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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:01   3343   0

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

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

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP