添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在 Java Web 开发中,当session超时的情况下,普通页面的跳转好处理。关于Ajax的请求超时处理,就需要特殊处理下了。

先写一个统一的过滤器,或者拦截器,针对Ajax请求进行过滤处理,下面示例以Filter为例:

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest servletRequest=(HttpServletRequest)request;
        HttpServletResponse servletResponse=(HttpServletResponse)response;
        // 判断是否是 Ajax 请求,因为 Ajax 请求会追加 x-requested-with=XMLHttpRequest
        if("XMLHttpRequest".equalsIgnoreCase(servletRequest.getHeader("x-requested-with"))){
            servletResponse.addHeader("sessionstatus", "timeout");
        // 后续代码省略......

然后在页面上调用使用Ajax的时候,捕获结果进行超时处理,如下:

// 全局的ajax访问,处理ajax清求时sesion超时
$.ajaxSetup({
    type: POST,
    contentType:"application/json;charset=utf-8",
    // 使用 complete 捕获结果,做超时处理
    complete: function (XMLHttpRequest, textStatus) {
        var data = XMLHttpRequest.responseText;
        if (data == "timeout") {
            if( window.top != window.self ){
                window.top.location = "${pageContext.request.contextPath}";

根据 Header 判断是否是 Ajax 请求,如果是 Ajax 就丢出一个状态码。

这段处理的 js 代码,可以提取为一个方法,这样方便在其他地方直接使用。

ajax方法往往需要验证用户身份等信息,此时通常需要读写session和cookie。在asp.net的ajax方法读写session和cookie首先要注意的是ajax方法虽然写在网页,在ide里自动完成工具也可以直接帮你写出Session[key]或者是Request.Cookie[key],但是这些肯定都不好用,因为ajax方法本身就相当于一个网页,他是通过了asp.net的hand... 在一个项目真正上线的时候,一定会存在一个项目超时的问题,也就是服务端无法及时响应客户端提交的内容。通过对ajax设置超时设置,给用户一个提醒。超时设置:时间定为3秒(2s之后如果没有返回结果 就发送超时设置)服务端设置 这时候发送ajax请求会3s后收到响应。超时提醒(在实际场景会使用div 实际场景)超时和异常给用户一个提醒(通过ajax)在网路异常的时候也给用户一个提醒。可以借助chorme浏览器进行。 前台js改变Session的值(用ajax实现)首先,html代码:复制代码 代码如下:js代码:复制代码 代码如下:var compareContent=”你要改变的值";if (compareContent != "") {document.getElementById("compareIframe").src = "ajax/changeSession.aspx?compareInfo=" ... From http://blog.csdn.net/01022417/archive/2006/10/17/1337527.aspx在服务器端page_loadAjaxPro.Utility.RegisterTypeForAjax(typeof(test));this.Button_Write.Attributes.Add("onclick","WriteSession();");//写sessi...