`

session过期后自动跳转到登陆页

    博客分类:
  • SSH
 
阅读更多
session过期后自动跳转到登陆页http://blog.csdn.net/lovesomnus/article/details/49582885

session过期后自动跳转到登陆页 http://my.oschina.net/u/1432675/blog/297839


1、web.xml中添加过滤器配置
<filter>
        <filter-name>sessionFilter</filter-name>
        <filter-class>com.orchestrall.web.helper.session.SessionFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>sessionFilter</filter-name>
        <url-pattern>/actions/*</url-pattern>
</filter-mapping>

2、新建SessionFilter类,实现Filter接口。
public class SessionFilterimplements Filter {
    public void destroy() {
        // TODO Auto-generated method stub
    }
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        HttpSession session = httpRequest.getSession();
        // 登陆url
        String loginUrl = httpRequest.getContextPath() + "/admin/login.jsp";
        String url = httpRequest.getRequestURI();
        String path = url.substring(url.lastIndexOf("/"));
        // 超时处理,ajax请求超时设置超时状态,页面请求超时则返回提示并重定向
        if (path.indexOf(".action") != -1
                && session.getAttribute("LOGIN_SUCCESS") == null) {
            // 判断是否为ajax请求
            if (httpRequest.getHeader("x-requested-with") != null
                    && httpRequest.getHeader("x-requested-with")
                            .equalsIgnoreCase("XMLHttpRequest")) {
                httpResponse.addHeader("sessionstatus", "timeOut");
                httpResponse.addHeader("loginPath", loginUrl);
                chain.doFilter(request, response);// 不可少,否则请求会出错
            } else {
                String str = "<script language='javascript'>alert('会话过期,请重新登录');"
                        + "window.top.location.href='"
                        + loginUrl
                        + "';</script>";
                response.setContentType("text/html;charset=UTF-8");// 解决中文乱码
                try {
                    PrintWriter writer = response.getWriter();
                    writer.write(str);
                    writer.flush();
                    writer.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            chain.doFilter(request, response);
        }
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

3、客户端JS,用于ajax请求session超时

对于jquery
<script type="text/javascript">
$(document).ajaxComplete(function(event, xhr, settings) {  
    if(xhr.getResponseHeader("sessionstatus")=="timeOut"){  
        if(xhr.getResponseHeader("loginPath")){
            alert("会话过期,请重新登陆!");
            window.location.replace(xhr.getResponseHeader("loginPath"));  
        }else{  
            alert("请求超时请重新登陆 !");  
        }  
    }  
});  
</script>

对于extjs的ajax请求
Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);
    function checkUserSessionStatus(conn,response,options){
        if(response.getResponseHeader("sessionstatus") == 'timeout'){
            if(response.getResponseHeader("loginPath")){
                alert("会话过期,请重新登陆!");
                window.top.location.href = response.getResponseHeader("loginPath");
            }else{
                alert("请求超时请重新登陆 !");
            }
        }
    }

如果使某个ajax请求不受全局方法的影响,那么可以在使用$.ajax()方法时,将参数中的global设置为false,jquery代码如下:
$.ajax({
    url:"test.html",
    global:false//不触发全局ajax事件
})
分享到:
评论

相关推荐

    Session过期后自动跳转到登录页面的实例代码

    主要介绍了Session过期后自动跳转到登录页面实例代码,非常不错具有参考借鉴价值,需要的朋友可以参考下

    Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】

    主要介绍了Java Web实现session过期后自动跳转到登陆页功能,涉及java过滤器针对session的判断与跳转相关操作技巧,需要的朋友可以参考下

    Extjs 4.1 (MVC) 如何动态加载控制层以及session 过期该如何处理

    Extjs 4.1 (MVC) 如何动态加载控制层以及session 过期该如何处理

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

    里我们是介绍一个网站管理后台三个框架页面当我们的jsp定义的session变量超时时用户点击时自动退出框架页面并跳到登录页面去了,下面我来给大家演示一个实例

    Vue设置长时间未操作登录自动到期返回登录页

    我们会在登陆成功后调用sessionUtil文件中的setSession,sessionUtil下面写的有 import sessionUtil from '@/utils/sessionutil' sessionUtil.setSession("userInfo", '2'); 在routerutil.js文件中 import sessi

    axios 处理 302 状态码的解决方法

    比如说浏览器打开了一个单页面(SPA)应用,过了一段时间token(或者session)过期了,这个时候页面上发起 Ajax请求之后,后端返回302状态码跳转到login页面。 我这是使用的是 Vue + axios ,发现 axios 无法拦截到 ...

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

    主要介绍了Asp.net 中mvc 实现超时弹窗后跳转功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    详解ASP.NET中Session的用法

    当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一...

    node中的session的具体使用

    前言 在上一篇中node中的cookie,对cookie进行了相关介绍,本篇将继续前行,对session进行说明。 session是什么 ...当会话过期或被放弃后,服务器将终止该会话。 说了这么多,我们先来看看这货吧。 原

    登录超时给出提示跳到登录页面(ajax、导入、导出)

    主要介绍了登录超时给出提示跳到登录页面(ajax、导入、导出)的相关资料,需要的朋友可以参考下

    Django 5种类型Session使用方法解析

    这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一...

    补丁DD8.0-121102-12年11月02日

    -------------升级说明------------ 新增批量确认提现的功能 新增商城订单佣金可修改 添加淘宝授权自助获取 增加前台会员修改信息成功提示 ...去掉聚划算商品直接跳转到聚划算页面的功能(容易引发丢单)

    信息技术教学辅助平台1.04版源码

    2010.03.05修正添加学生的入学年度为自动获取,课程浏览中的探讨下查看改正为反思,修正导入课程包时的年级为当前年级及最新课时(使用session传递年级,注意页面过期) 2010.03.04修正学生ftp密码显示并修正2010.03....

    补丁DD8.0-121102-12年11月02日--重要

    去掉聚划算商品直接跳转到聚划算页面的功能(容易引发丢单) 补充说明:删除data下文件夹后,后台检测联盟数据的地方会显示异常,不要理会那个检测,已实际是否能收到订单为准。本次升级取消了回调地址key和淘宝ID...

    JspRun!社区论坛系统 v6.0 bulid 090423 GBK 源码版.rar

    29、修复了后台操作中如果 session 过期重新登陆后出现循环跳转 30、修复了恶意访问后台权限判断,个人签名过滤恶意html代码的问题 31、修复了全文检索不精确 32、修复了如果域名中多一个"/"符,后台表情搜索失效...

    JspRun!社区论坛系统 v6.0 bulid 090424 GBK 安装版.rar

    29、修复了后台操作中如果 session 过期重新登陆后出现循环跳转 30、修复了恶意访问后台权限判断,个人签名过滤恶意html代码的问题 31、修复了全文检索不精确 32、修复了如果域名中多一个"/"符,后台表情搜索失效...

    然之协同办公系统 5.2

    1132 在登录页面长时间断开网络连接session过期导致登录失败;1134 动态是搜索表单需要保证默认的检索条件为空;1135 点击项目跳转的地址不对;1137 session目录检查功能不要关闭;1138 禅道一键安装包安装然之异常...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例269 将SESSION数据存储到数据库中 355 实例270 SESSION更换聊天室界面 357 实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例269 将SESSION数据存储到数据库中 355 实例270 SESSION更换聊天室界面 357 实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    以前说到BUTTON控件CausesValidation=true/false来设置按钮提交的表单是不是被检验也就是这里的几个检验控件,如果CausesValidation=true的话按下按钮就会首先检测是不是都通过了检验控件的检验。 下面再说两点: ...

Global site tag (gtag.js) - Google Analytics