`

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事件
})
分享到:
评论

相关推荐

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

    Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】 本文主要介绍了Java Web实现session过期后自动跳转到登陆页功能,涉及java过滤器针对session的判断与跳转相关操作技巧。 一、建立基本过滤器 要...

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

    以上代码片段展示了如何通过过滤器实现Session过期后的自动跳转。这种方式更加灵活,可以直接控制HTTP响应,确保用户在Session过期后能够被正确地引导回登录页面,重新验证其身份。在实际应用中,还需要考虑其他因素...

    session失效重新登录后,返回之前页面,并保留表单数据

    例如,可以显示一个友好的提示,告知用户由于Session过期需要重新登录,并提供一键返回按钮。同时,登录页面应设计为可直接从登录状态快速恢复到原页面,且能自动填充之前输入的表单数据。 6. 安全性考虑: 在处理...

    session过期处理

    - 自动跳转到登录页:服务器可以设置拦截器或过滤器,当检测到Session过期,直接重定向到登录页面。 - 提示信息:告知用户Session已过期,需要重新登录。 4. **Session与Cookie的关系**:Session依赖于Cookie来...

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

    当Session过期后,由于控制器无法正常初始化,可能导致某些功能无法正常工作。这个问题的解决方案通常涉及到前后端的配合。 在后端处理方面,我们可以通过检查请求头(request headers)中的`accept`字段来判断请求...

    项目访问时间过长session过期提醒

    "项目访问时间过长session过期提醒"这个话题涉及到的是如何配置Web应用程序,以便在用户的会话过期时自动跳转到特定的过期页面,提醒用户重新登录。下面我们将详细讲解实现这一功能的关键步骤和技术。 首先,我们...

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

    综上所述,通过使用过滤器来处理session过期后的重定向,并结合JavaScript来控制iframe框架的跳出和页面的刷新,可以有效地解决JSP应用中的会话管理和页面布局问题。这不仅可以提升系统的安全性,同时也能改善用户...

    c#实现cookie和session的登陆实例

    所以通常设置合理的Session过期时间,如`Session.Timeout = 20;`表示20分钟无操作后Session失效。 3. **结合Cookie和Session**: - 有时,为了兼顾用户体验和安全性,开发者会选择结合Cookie和Session。登录成功后...

    ASP.NET(基于VS2008 C#)页面计时自动跳转(session和Javascript两种方法)

    在ASP.NET开发中,有时我们需要实现页面在一定时间后自动跳转到其他页面,这通常用于用户会话超时或者完成某操作后需要转移场景的情况。本教程将介绍两种实现方式:一是通过服务器端的Session,二是利用客户端的...

    Javaweb 登录页面自动跳转

    3. **登录成功后的处理**:当用户认证成功后,系统通常会自动跳转到一个新的页面,例如主页或者用户个人中心。这种跳转可以通过多种方式实现: - **Servlet响应重定向(Redirect)**:使用`response.sendRedirect...

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

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

    重写 ajax 实现 session 超时跳转到登录页面实例代码

    这样,当Ajax请求因Session超时导致服务器返回302时,前端能够捕获到这个错误并自动跳转到登录页面,而不是让页面保持在原来的视图中,提供良好的用户体验。 总结来说,结合后端的Session过滤器和前端的Ajax重写,...

    session session session szsessdifn

    2. 会话过期:默认情况下,Session会在一段时间无活动后自动销毁,需要合理设置过期时间。 3. 不能跨域共享:每个域名有自己的Session,不同域间的页面无法直接共享Session数据。 4. 安全性:Session信息存储在...

    session丢失解决方法

    如果用户在这段时间内没有进行任何操作,Session将会自动过期。 3. **应用程序池回收**:IIS的应用程序池默认每1740分钟(约29小时)会自动重启一次,这会导致所有用户的状态信息丢失。 4. **多台服务器部署**:在...

    详解springmvc控制登录用户session失效后跳转登录页面

    在`sessionrun.jsp`页面中,我们可以设置一个友好的提示信息,告知用户session已过期,建议他们在2秒后自动跳转回首页(或指定的登录页面)。这里使用JavaScript实现延迟跳转,同时弹出警告框通知用户。 通过以上...

    判断Session的过期时间 采用JavaScript实时显示剩余多少秒

    知识点四:实现Session过期提示 当Session即将过期或已过期时,需要给用户提供提示。在代码示例中,如果检测到`lefttime`等于0,就会停止定时器,并通过JavaScript弹出一个警告框提示用户。如果用户确认,则通过`...

    session_test.zip

    `表示30分钟后Session自动失效。 2. Session复制与集群:在多台服务器的集群环境下,需要实现Session复制或共享,确保所有服务器都能访问到同一份Session数据。 3. Session管理:过多的Session会消耗大量内存,可以...

    session定义和作用

    Session的核心概念是“会话”,它在用户打开网站并开始浏览网页时被创建,直到用户关闭浏览器或者Session过期。每个Session都与特定的用户相关联,通过SessionID来区分不同的用户。当用户在网站内跳转页面时,...

    在asp.net中使用session常见问题集锦

    `Session_End`事件是在Session过期或放弃时触发的,而`Response.Redirect`和`Server.Transfer`仅涉及页面间的跳转,并不涉及Session的销毁。因此,在这种情况下,`Session_End`事件不会被触发。如果需要执行某些清理...

Global site tag (gtag.js) - Google Analytics