spring mvc session超时,处理ajax请求
2014-09-30 web综合 1条评论 729次浏览
原文:http://my.oschina.net/zhk/blog/323452
做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面。但是ajax请求就会有问题。session超时的时候,点击到ajax请求就会弹出一些页面源码文件。
首先建了个拦截器,来判断session超时。用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时。
拦截器是spring-mvc的拦截器,在拦截器里判断是不是ajax请求:
public class LoginInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Object obj = request.getSession().getAttribute(SecurityConstants.LOGIN_USER);
if (null == obj) { //未登录
if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //如果是ajax请求响应头会有,x-requested-with
response.setHeader("sessionstatus", "timeout");//在响应头设置session状态
}else{
response.sendRedirect(request.getContextPath()+"/account/login");
}
return false;
}
return super.preHandle(request, response, handler);
}
}
这样,如果session超时,而且是ajax请求,就会在响应头里,sessionstatus有一个timeout;
再用一个全局的方法来处理,session超时要跳转的页面。
jquery 可以用$.ajaxSetup 方法,ext也有类似的方法
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete:function(XMLHttpRequest,textStatus){
var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,
if(sessionstatus=="timeout"){
alert("登录超时,请重新登录!");
//如果超时就处理 ,指定要跳转的页面
window.location.replace(webPath.webRoot + "account/login");
}
}
});
分享到:
相关推荐
总结来说,实现Webix+Spring MVC环境下Session超时跳转登录页面的关键在于,前端扩展Webix的Ajax请求处理,添加对Session超时的检查,并在检测到超时后使用JavaScript进行页面重定向;后端则需在Spring MVC的拦截器...
5. **会话管理(Session Management)**:Spring Security 可以配置会话超时、会话固定攻击防护等策略,保护用户会话的安全。 **Spring MVC 知识点** 1. **DispatcherServlet**:作为 Spring MVC 的核心,它负责...
5. **Spring与Ajax**:Spring框架也可以通过Controller层来处理Ajax请求,返回ModelAndView或者直接返回JSON对象。使用`@ResponseBody`注解可以确保返回的数据被转换为适合Ajax响应的格式。 6. **Hibernate与Ajax**...
Ajax和JSON请求 145 CookieCsrfTokenRepository 146 18.5 CSRF警告 147 18.5.1超时 148 18.5.2登录 148 18.5.3注销 149 18.5.4多部分(文件上传) 149 在Spring Security之前放置MultipartFilter 150 包含CSRF令牌 ...
通常,前端会通过AJAX异步请求获取验证码,然后更新图像标签的`src`属性,显示新生成的验证码图像。 8. **异常处理**:在开发过程中,要考虑到可能出现的各种异常情况,比如网络问题、会话超时、验证码输入错误等,...
- session管理:防止会话劫持和会话固定攻击,合理设置session超时。 6. **优化与扩展性**: - 使用缓存技术(如Ehcache)提高数据读取速度,减轻数据库压力。 - 设计良好的接口和模块化,方便后续功能的添加和...
- **Struts或Spring MVC**:可能是用于实现MVC模式的框架,提供请求调度和动作处理。 - **JSTL(JavaServer Pages Standard Tag Library)**:用于增强JSP页面的可读性和可维护性,减少脚本代码。 - **Ajax**:异步...
Servlet通常作为Controller,处理请求并调用模型(业务逻辑),然后更新或生成视图(JSP)。 四、请求处理 理解HTTP请求和响应,包括GET和POST方法的区别、请求参数的获取(`request.getParameter()`)、请求转发和...
4. **会话管理**:登录成功后,可以通过设置Session来保持用户的登录状态,直到用户主动退出或会话超时。 前端部分,Bootstrap是一个流行的CSS框架,它提供了丰富的预定义样式和组件,可以快速构建响应式布局,提高...
同时,还可以设置Session超时,防止会话固定攻击。 6. **视图渲染** 登录结果(成功或失败)需要反馈给用户。Structs支持多种视图技术,如JSP、FreeMarker等,可以方便地创建登录后的反馈页面。 7. **错误与消息...
Ajax请求Session超时问题:Ajax请求可能会遇到Session超时的问题,需要特别处理。 Java线程池概述:Java线程池可以重用一组线程来执行多个任务,提高程序性能。 OSCache概述:OSCache用于将频繁访问的数据缓存在...
学习Servlet包括理解生命周期、配置Servlet、doGet与doPost方法的使用,以及如何通过HttpServletResponse和HttpServletRequest对象来处理请求和响应。 2. **JSP(JavaServer Pages)**:JSP是另一种服务器端技术,...
同时,会话管理也是确保用户安全的重要环节,可能通过设置session超时和使用cookie来追踪用户状态。 再者,考虑到可扩展性和维护性,飞天论坛可能采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据...
- 在MVC(Model-View-Controller)架构中,Servlet常作为Controller,处理请求,控制流程,而JSP作为View,负责展示视图。 - Servlet可以将数据存储在请求或会话属性中,然后在JSP中通过EL表达式访问这些数据。 7...
Spring框架是实现MVC模式的常用工具,它提供了强大的依赖注入、AOP(面向切面编程)和事务管理等功能。 四、数据库操作 JavaWeb应用通常需要与数据库进行交互,如MySQL、Oracle等。JDBC(Java Database ...
例如,当用户点击“加入购物车”按钮时,前端通过Ajax向后端发送请求,后端处理请求并将商品信息保存至数据库或session。 4. **MySQL数据库**:在大型系统中,商品信息和购物车数据通常存储在数据库中,如MySQL。...
这可能是Spring MVC中的一个拦截器,用于处理会话超时的问题。在Web应用中,Session管理是关键的一环,拦截器可以监控用户会话状态,防止非法访问或者在会话过期时进行相应的处理,如自动登出、提示用户重新登录等...
同时,登录成功后,系统通常会创建一个会话(Session)来跟踪用户状态,直到用户退出或会话超时。 5. **安全考虑**:在实际应用中,除了基本的登录功能,还需要考虑安全性问题,如防止SQL注入、XSS攻击,以及使用...
- **会话超时**:通过设置session的超时时间,可以控制用户在多长时间无操作后自动退出聊天室。 4. **实时通信技术**: - **AJAX(异步JavaScript和XML)**:可能被用来实现不刷新整个页面的情况下更新聊天内容,...