`
zhuchengzzcc
  • 浏览: 441793 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java过滤器对ext异步请求跳转(转)

    博客分类:
  • java
阅读更多

 

用户访问超时

解决两种情况下的用户访问超时。

a)普通http请求的session超时。

b)异步http请求的session超时,使用ext后大部分的界面刷新都是异步的ajax请求。

 

不管是那种类型的http请求总是可以由一个过滤器来捕捉。

分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。

其实对于常见的ajax框架,header中还有标示自己身份的header信息。

 

对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。

对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测

头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。

 

 

服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时:

 

 

if(httpRequest.getSession().getAttribute("USER") == null){
	    String ajax = httpRequest.getHeader("x-Requested-with");
	    if(ajax != null && ajax.equals("XMLHttpRequest")){
		httpResponse.setHeader("sessionstatus", "timeout");
	    } else {
		//普通http请求 session超时处理
		wrapper.sendRedirect("......");
	    }
	} else {
	    chain.doFilter(request, response);
	}

 

 

使用Ext.Ajax对象完成异步请求的交互,Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)。

注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件。在该事件的回调函数里面判断

访问请求是否超时。使用Ext.Ajax对象的好处是,只需要引入一个包含了几行超时处理代码的js文件,就可以

为当前应用增加超时处理功能,原有代码不需要做任何修改。

 

 

使用Ext.Ajax对象完成异步请求交互,每个页面引用:

 

 

Ext.Ajax.on('requestcomplete', function(conn,response,options){
	if(response.getResponseHeader("sessionstatus")){
		window.location = "<c:url value='/'>";
	}
});

 

 

可以利用的几个特性:

a)所有的ajax请求均带有x-requested-with:XMLHttpRequest头信息

b)Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)

c)注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件(概念类似spring的aop拦截)。

 

 

对于其他的ajax框架,解决用户访问请求超时这个问题的思路是类似的。

分享到:
评论

相关推荐

    ext异步跳转问题(解决过滤器的问题)

    例如,`java过滤器对ext异步请求跳转.txt`可能包含了一个Java过滤器的实现,用于处理Ext的异步请求。这个过滤器可能会检查请求头中的特定字段,或者查看请求参数,判断是否需要进行页面跳转。如果发现需要跳转,过滤...

    EXT异步提交FORM表单

    ### EXT异步提交FORM表单知识点详解 #### 一、EXT异步提交FORM表单概述 在现代Web应用开发中,异步提交表单是一种常见的技术手段,它能够提升用户体验,减少页面刷新带来的数据丢失风险,并能有效提高系统的响应...

    ext json请求java后台返回集合数据

    标题中的“ext json请求java后台返回集合数据”指的是在Web开发中,前端EXTJS库通过JSON格式发送请求到Java后台,后台处理后返回一个集合(可能是列表或数组)的数据。EXTJS是一个用JavaScript编写的富客户端框架,...

    java-ext.zip_ext_ext java_ext 标签_ext java_java ext

    在这个名为"java-ext.zip_ext_ext java_ext 标签_ext java_java ext"的压缩包中,我们找到了关于如何在ExtJS中调用Java JSON服务的示例。 首先,让我们理解JSON(JavaScript Object Notation)。JSON是一种轻量级的...

    ext 异步加载树完整版

    4. **异步请求触发器**: Tree Panel的`load`事件或节点的`expand`事件可以触发异步加载。当用户展开节点时,会触发加载子节点的操作。 5. **服务器端处理**: 服务器端需要提供一个接口,接收请求并返回对应节点的子...

    EXT和JAVA例子

    此外,可能还涉及到了EXT的Ajax请求,通过Ext.Ajax或者Ext.data.JsonP方法与Java后台进行异步通信。这种方式使得前端可以实时地更新数据,而无需刷新整个页面,提升了用户体验。 在学习这个例子时,你可能会关注...

    oa.rar_ext_ext java oa_ext oa_ext tree_java ext tree

    标题中的"oa.rar_ext_ext java oa_ext oa_ext tree_java ext tree"似乎是一个组合字符串,它可能代表了某个项目或教程的文件结构。其中,“oa”可能是项目或系统的名称,而“ext”、“java”、“oa_ext”、“tree_...

    ExtJs异步请求和特殊用途

    ExtJS使用了`Ext.Ajax`对象来处理异步请求。它封装了XMLHttpRequest对象,提供了发送GET、POST、PUT、DELETE等各种HTTP请求的方法。开发者可以通过配置参数,如URL、方法、参数、请求头、回调函数等,定制化请求...

    ext+js.rar_ext_ext js_ext js java_java+ext

    标题中的"ext+js.rar_ext_ext js_ext js java_java+ext"似乎是在组合提及几个关键词,包括"ext","js",以及它们与"java"的关联。这些词汇主要涉及JavaScript的一个流行库——Ext JS,它是一个用于构建富客户端Web...

    Ext2.0.2的Ajax请求拦截示例

    在Ext JS中,Ajax请求是进行异步数据交互的基础,它允许页面在不刷新的情况下与服务器进行通信。本示例将深入探讨如何在Ext2.0.2中实现Ajax请求的拦截,以便在发送请求前或接收响应后执行自定义逻辑。 首先,我们...

    Ext.ux.tree.treegrid异步加载

    ### Ext.ux.tree.TreeGrid 异步加载知识点详解 #### 一、Ext.ux.tree.TreeGrid简介 在ExtJS框架中,`Ext.ux.tree.TreeGrid`组件是一种结合了树形结构与表格显示特性的控件,适用于展示具有层级关系的数据。通过...

    Ext 异步加载添加 删除节点 修改combobox选择项

    在Ext JS中,异步加载是一种常见的数据处理方式,尤其在构建动态的用户界面时非常有用。本篇文章主要探讨了如何在异步加载的场景下,实现树形控件(TreePanel)中节点的动态添加、删除以及ComboBox选择项的修改。 ...

    ext session失效 页面跳转

    实现这个功能,开发者通常会在EXT应用中的某个全局或关键位置(如路由控制器)设置一个检查Session的逻辑。例如,每次用户执行操作前,EXT应用都会向服务器发送一个轻量级的请求,询问Session是否有效。如果服务器...

    ext java登录案例

    在EXT中,我们可以使用`Ext.Ajax.request`方法发送异步请求。例如: ```javascript Ext.Ajax.request({ url: 'login.php', // 后端接口URL method: 'POST', params: { username: form.findField('username')....

    ext分页客户端demo Java js

    在这个"ext分页客户端demo Java js"的示例中,我们将探讨EXTJS如何实现客户端分页,以及如何与后端(如Java)进行数据交互,而无需在服务器端编写额外的Java代码。 EXTJS中的分页组件主要由Ext.grid.Panel和Ext....

    Ext.Ajax.request2.x实现同步请求

    异步请求允许用户在等待服务器响应的同时继续进行其他操作,提高了用户体验。然而,在某些场景下,例如初始化页面数据或必须等待前一个请求完成才能执行后续逻辑时,同步请求是必要的。 `Ext.Ajax.request`的默认...

    EXT Java登录实例

    EXT Java登录实例是一个基于EXT库和Java后端的登录系统示例。EXT是一个流行的JavaScript库,主要用于构建富客户端应用程序,而Java和MySQL则在后台提供数据处理和存储功能。在这个项目中,EXT负责前端用户界面的展示...

    Ext实现java的面向对象实例

    在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是一种核心特性,它提供了组织代码的有效方式,使得程序更加模块化、可维护和易于扩展。在Ext框架中,面向对象的概念得到了进一步的强化和扩展,为...

    java ajax ext实例

    9. **EXT.layout**:布局管理器是EXT.js中非常重要的一部分,它负责管理组件的排列和大小调整,确保组件在不同屏幕尺寸下都能正确显示。 10. **Ajax生命周期**:理解Ajax请求的生命周期至关重要,包括请求的初始化...

Global site tag (gtag.js) - Google Analytics