`
fireinjava
  • 浏览: 480578 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Ext结合Struts的Session超时处理

    博客分类:
  • Ext
阅读更多

配置struts.xml文件的默认拦截器(注:登录的action用<default-interceptor-ref name="defaultStack" />)

<interceptors>
     <interceptor name="loginInterceptor" class="com.fireinjava.ui.interceptor.LoginInterceptor" />
     <interceptor-stack name="myDefaultIntegerceptor">
           <interceptor-ref name="loginInterceptor" /> 
           <interceptor-ref name="defaultStack" />
     </interceptor-stack>
</interceptors>
		
<default-interceptor-ref name="myDefaultIntegerceptor" />

 

拦截器LoginInterceptor.java

package com.fireinjava.ui.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.fireinjava.ui.UserEnv;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * @version 1.0
 * @data 2009-9-23
 * @描述:检查Session是否超时
 */
public class LoginInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation actioninvocation) throws Exception {
		ActionContext context = actioninvocation.getInvocationContext();
		Map session = context.getSession();
		UserEnv user = (UserEnv) session.get("userEnv");
		System.out.println(">>>>>>>>>>>>>LoginInterceptor");
		if (user != null) {
			return actioninvocation.invoke();
		} else {
			outString("<script type=\"text/javascript\">var session='SessionExpired'; function getRootWin(){var win = window;while (win != win.parent){win =win.parent;}return win;} getRootWin().reLogin();</script>");//页面接收
		}
		return Action.NONE; // 页面上写一个Login弹出窗口
	}

	public void outString(String str) {
		HttpServletResponse response = ServletActionContext.getResponse();
		try {
			response.setHeader("Pragma", "No-cache");
			response.setHeader("Cache-Control", "no-cache");
			response.setDateHeader("Expires", 0);
			response.setContentType("text/html;charset=gbk");
			PrintWriter out = response.getWriter();
			out.write(str);
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 jsp 页面代码:

 

<script type="text/javascript">

function getRootWin(){   
    var win = window;   
    while (win != win.parent){   
        win = win.parent;   
    }   
    return win;   
}   

var reLoginWin;

reLogin = function (){ getRootWin().reLoginWin=new Ext.Window(....);}//登录窗口

Ext.Ajax.on('requestcomplete', function(conn, response, options, e){  var returnVal=response.responseText;  if(!Ext.isEmpty(returnVal)&&returnVal.indexOf('SessionExpired')!=-1)   reLogin();});

</script>

 

  

嵌入外部页面时,保持本应用的Session激活

function keepSession(){
     Ext.Ajax.request({url : 'keepSession.action'});
}
setInterval("keepSession()",60000);//1分钟调用下

 

<action name="keepSession" class="com.xx.BaseAction" method="keepSession"/>

public void keepSession(){

}

分享到:
评论

相关推荐

    ext+struts2的学生信息管理系统

    总结来说,EXT+STRUTS2结合了前端的强大交互性和后端的稳定处理能力,为构建学生信息管理系统提供了高效且灵活的解决方案。理解并掌握这种技术栈,对于提升企业级应用的开发效率和用户体验具有重要意义。

    ext整合struts2

    1. **企业级应用**:Struts2提供了强大的控制层,EXTJS则提供了丰富的用户界面,两者结合可以构建功能强大的企业级应用。 2. **提升用户体验**:EXTJS的富客户端特性可以提供与桌面应用类似的交互体验,增强用户的...

    ext+struts2

    EXT是一个强大的JavaScript库,它提供了丰富的用户界面组件和交互效果,而Struts2是Java EE平台上的一个MVC框架,用于处理业务逻辑和控制应用程序流程。 在EXT中,文件上传通常通过EXT.form.FileField组件实现,这...

    ext+struts1.2图书管理系统

    这种结合使得前端能够动态地更新数据,同时利用 Struts1.2 的强大控制能力处理复杂的业务流程。 文件名为 "bysj2" 的压缩包可能包含了该图书管理系统的源代码、配置文件、数据库脚本等相关资源。解压后,开发者可以...

    Ext+struts学生管理系统

    "Ext与后台交互"是指在用户操作界面前端时,ExtJS会通过Ajax技术向Struts发送异步请求,Struts处理请求后返回数据,再由Ext更新界面。"Ext与数据库交互"通常指的是ExtJS通过Struts与后台服务器进行数据交换,从而...

    Ext+struts+ibatis 完整项目

    在"Ext+struts"的集成中,Struts主要负责处理后端逻辑,响应前端ExtJS组件的请求。 **iBatis** 是一个持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了JDBC的繁琐操作。iBatis提供了一种灵活的方式来...

    Ext_struts2

    Ext_struts2是一个结合了Ext JS前端框架与Struts2后端MVC框架的整合应用,旨在提升Web应用的用户体验和开发效率。Struts2是一个强大的、基于Java的开源MVC框架,它提供了模型-视图-控制器模式的实现,以帮助开发者...

    Ext和struts2实例

    将 Ext 与 Struts2 结合使用,可以充分利用两者的优点,实现前后端分离,提升用户体验并简化开发流程。然而,集成过程中可能会遇到 jar 包冲突的问题。这通常是因为不同库之间的依赖版本不一致,导致类加载器无法...

    ext session失效 页面跳转

    当Session超时,服务器会清除相关的Session数据,并在后续的请求中告知EXT前端。 此外,为了提供更好的用户体验,一些应用会选择在Session即将到期时提醒用户,而不是突然跳转到登录页。这可以通过在后台定期发送...

    Ext+Struts2的学生成绩管理系统

    总之,"Ext+Struts2的学生成绩管理系统"是两种技术的完美结合,既实现了富客户端的交互体验,又保证了后端的稳定和高效。对于学习者来说,这个项目不仅提供了实践平台,也是深入理解这两种技术的绝佳案例。

    ext+struts+spring小例子

    当用户在EXT JS界面执行操作时,如点击添加图书按钮,EXT JS会发送一个Ajax请求到服务器,Struts或Spring MVC接收到请求后,调用相应的业务逻辑,处理完后返回结果,EXT JS再根据返回的数据更新界面。 例如,...

    ext json struts 完整无错源码

    总结来说,"ext json struts 完整无错源码" 是一个很好的学习资源,可以帮助开发者了解如何将现代前端技术(EXT)与后端 Java Web 开发框架(Struts)相结合,通过 JSON 进行数据交换,创建高效、动态的 Web 应用...

    struts与ext集成

    创建对应的Struts2 Action,处理EXT发起的请求。Action可以使用Struts2的拦截器进行数据校验、事务管理等操作。 5. **EXT Direct** EXT Direct是EXT和服务器之间通信的一种高效方式,它允许直接调用服务器端的...

    ext + struts2 例子

    在IT行业中,EXT和Struts2是两个非常重要的框架,它们分别用于构建用户界面和处理后端业务逻辑。本文将详细介绍EXT与Struts2的结合使用,并通过标题和描述中的关键词,如“树”、“gridpanel”、“分页”、“文件...

    搭建EXTJS和STRUTS2框架(ext和struts2简单实例)

    ### 搭建EXTJS和STRUTS2框架(ext和struts2简单实例) #### 一、概述 本文档将详细介绍如何在Java Web项目中搭建EXTJS和STRUTS2框架,并通过一个简单的实例来展示如何使这两个技术协同工作。EXTJS是一个用于构建交互...

    EXT+STRUTS2 经典例子

    EXT 和 Struts2 是两种广泛使用的 Java Web 开发框架,它们在构建动态、交互式的用户界面和处理服务器端业务逻辑方面都有出色的表现。EXT 主要是前端的 JavaScript 框架,提供丰富的组件库和强大的数据绑定功能,而 ...

    Ext3.2 + struts 文件上传实例

    总的来说,通过结合Ext3.2和Struts,我们可以构建一个功能强大且用户体验良好的文件上传系统,同时处理好中文乱码问题,确保数据的正确性。实践过程中,一定要注意安全性和性能优化,以提供稳定、可靠的Web服务。

    ext struts2 swfupload 跨域文件上传

    总结起来,"ext struts2 swfupload 跨域文件上传"是关于如何使用EXTJS构建前端界面,结合Struts2处理服务器端逻辑,利用SwfUpload的跨域能力实现文件上传的一种解决方案。这个过程中涉及的技术包括JavaScript编程、...

    SSI+EXT (Struts2+Spring+Ibatis+Ext)

    总结来说,SSI+EXT组合提供了完整的前后端开发解决方案,Struts2处理请求,Spring管理业务逻辑,Ibatis负责数据库操作,而Ext JS则为用户提供了友好的交互界面。这个项目实例对于学习和理解这些技术的集成以及实际...

    Ext+struts2项目

    4. 表单处理:EXTJS2的表单组件可以与Struts2的表单验证相结合,实现客户端和服务器端的双重验证。 5. 动态加载:EXTJS2的Ajax功能可以实现页面部分内容的异步加载,提升用户体验。 6. 页面布局:EXTJS2的布局管理...

Global site tag (gtag.js) - Google Analytics