`

session超时-处理用户是否登陆过滤

阅读更多

后台代码

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

HandlerInterceptorAdapter :spring-MVC过滤器

提高三个方法:

 

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)    
        throws Exception {    
        return true;    
    }    
    public void postHandle(    
            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)    
            throws Exception {    
    }    
    public void afterCompletion(    
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)    
            throws Exception {    
    }   
 

 

preHandle中,访问前  --- 可以进行编码、安全控制等处理

postHandle中,方法访问后(调用了Service并返回ModelAndView,但未进行页面渲染) --- 有机会修改ModelAndView ; 

afterCompletion中,返回处理(已经渲染了页面)  --- 可以根据ex是否为null判断是否发生了异常,进行日志记录 。 

 

public class MyHandlerInterceptor extends HandlerInterceptorAdapter {
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
		//一些不需要过滤的连接 登陆方法 等
		String url = request.getRequestURI();
		if(url.endsWith("user/login") ){
			return true;
		}
		if(request.getSession().getAttribute(Constants.USER_INFO_SESSION) == null){  //判断session中,用户信息是否为null,为null表示未登陆
              //判断是否是AJAX访问
			if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { 
					response.setHeader("sessionstatus", "timeout"); 
					return false;
			}else{
				response.sendRedirect(request.getContextPath()+"/index.jsp");  //非AJAX访问,页面跳转
				return false;
			}
		}
		return true;
	}
}

前台 JQuery 和 EXT 框架的AJAX处理

JQuery统一处理

 

//全局的ajax访问,处理ajax清求时sesion超时  
         $.ajaxSetup({   
             contentType:"application/x-www-form-urlencoded;charset=utf-8",   
             complete:function(XMLHttpRequest,textStatus){   
                     var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,  
                     if(sessionstatus=="timeout"){   
                                 //如果超时就处理 ,指定要跳转的页面  
                                         window.location.replace("${path}/common/login.do");   
                                 }   
                      }   
             }   
           });  

 

 EXT统一处理

 

Ext.Ajax.on('requestcomplete', function(conn, response, optoins) {
	if (response.getResponseHeader) {
		if (response.getResponseHeader('sessionstatus') == 'timeout') {
			window.location.href = 'http://www.baidu.com/';  //如果是过期,跳转到页面
		}
	}
});
 

 

分享到:
评论

相关推荐

    Web 开发中Ajax的Session 超时处理方法

    在 Java Web 开发中,当session超时的情况下,普通页面的跳转好处理。关于Ajax的请求超时处理,就需要特殊处理下了。 先写一个统一的过滤器,或者拦截器,针对Ajax请求进行过滤处理,下面示例以Filter为例: ...

    ajax提交session超时跳转页面使用全局的方法来处理

    在过滤器中写入如下方法: 代码如下: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httprequest = ...

    Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法

    当session过期后可以用过滤器来设置重定向页面 代码如下:public class ActionFilter extends HttpServlet implements Filter {private FilterConfig filterConfig;public void init(FilterConfig config) {this....

    Spring Security-3.0.1中文官方文档(翻译版)

    持久登陆(Remember-Me)表 A.3. ACL 表 A.3.1. Hypersonic SQL A.3.1.1. PostgreSQL B. 安全命名空间 B.1. Web 应用安全- <http> 元素 B.1.1. <http> 属性 B.1.1.1. servlet-api-provision B....

    HttpClient以及获取页面内容应用

    1.7.1传递参数的需要用户登陆 尽早解决。 2Java使用Url获取网页内容 2.1简介 项目的管理档t。 2.2应用 2.2.1获取网页内容 /** * 通过url获取网页内容, * 解决中文乱码问题 * @param httpUrl * @return ...

    Spring Security 中文教程.pdf

    持久登陆(Remember-Me)表 A.3. ACL表 A.3.1. Hypersonic SQL A.3.1.1. PostgreSQL B. 安全命名空间 B.1. Web应用安全 - <http> 元素 B.1.1. <http> 属性 B.1.1.1. servlet-api-provision B.1.1.2...

    SpringSecurity 3.0.1.RELEASE.CHM

    获得当前用户的信息 5.2.2. UserDetailsService 5.2.3. GrantedAuthority 5.2.4. 小结 5.3. 验证 5.3.1. 什么是Spring Security的验证呢? 5.3.2. 直接设置SecurityContextHolder的内容 5.4. 在web应用中...

    Asp.net 中mvc 实现超时弹窗后跳转功能

    假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { var cookie ...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    在手动添加黑名单时,只需要将用户的SQL语句输入,在内部自动转化成过滤条件,手动添加时是否生效由参数 manual-filter-flag 来控制,OFF:不生效,ON:立即生效 手动添加与自动添加两种情况下的过滤条件...

    Nginx安装包

    那么这session是否能被共享呢? 让我们老规矩,复制tomcat1的项目,到tomcat2中去,修改个别字以区分页面。 启动项目,直接在浏览器中输入个人中心的路径,localhost:8081/userCenter。可以看到没报任何空指针错误,...

    spring security 参考手册中文版

    远程处理 - spring-security-remoting.jar 25 Web - spring-security-web.jar 25 配置 - spring-security-config.jar 26 LDAP - spring-security-ldap.jar 26 ACL - spring-security-acl.jar 26 CAS - spring-...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. ...

    HibernateAPI中文版.chm

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. ...

    hibernate3.2中文文档(chm格式)

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. ...

    myeclipse新建SSH项目的步骤struts2+spring+hibernate

    手把手教你用myeclipse新建SSH项目struts2+spring+hibernate 功能_Spring编码过滤Servlet_session超时设置_Spring事务管理器的另一种用法

    springboot-ng:springboot+angular -- 17年5月停更

    7.session超时处理和httpsession监听器 8.bootstarp-Admin框架 9.记录登录者信息,存储在mongodb中.(使用到百度地图api中的IP精确定位) 已包含工具类: 1.ID生成器 2.日期处理 3.短信验证码发送(使用的是云片网络) ...

    sh4springmvc3层架构html5+jsp多视图

    这个demo实现了简单地用户管理,权限管理,角色管理,底层使用ssh4的dao,service...利用过滤器实现session超时管理,权限管理需要自己补全。echache实现了二级缓存,打印sql可以看到部分配置后不会重复查询数据库。

    记事本在线「Notepad Online」-crx插件

    * 解决session超时不重新连接,导致同步失败的问题 * 内容里js被过滤的问题 v1.2 2011-03-06 [修复] * 美化界面 * 更改同步方式 * 解空标题的问题 v1.1 2011-02-27 [新增] * 关于在线记事本,能够点击查看changelog...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     20.5.3 设定事务超时  20.6 Java应用通过Hibernate API声明JTA事务  20.7 Java应用通过JTA API声明JTA事务  20.8 小结  20.9 思考题 第21章 处理并发问题  21.1 多个事务并发运行时的并发问题  21.1.1 第一...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    3.4.1 Session、Application和Cache 3.4.2 Request 3.4.3 Response 3.4.4 Server 3.4.5 User 3.4.6 Trace 3.4.7 访问其他类中的HTTP上下文 3.5 总结 第4章 服务器控件 4.1 服务器控件的类型 ...

Global site tag (gtag.js) - Google Analytics