配置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结合了前端的强大交互性和后端的稳定处理能力,为构建学生信息管理系统提供了高效且灵活的解决方案。理解并掌握这种技术栈,对于提升企业级应用的开发效率和用户体验具有重要意义。
1. **企业级应用**:Struts2提供了强大的控制层,EXTJS则提供了丰富的用户界面,两者结合可以构建功能强大的企业级应用。 2. **提升用户体验**:EXTJS的富客户端特性可以提供与桌面应用类似的交互体验,增强用户的...
EXT是一个强大的JavaScript库,它提供了丰富的用户界面组件和交互效果,而Struts2是Java EE平台上的一个MVC框架,用于处理业务逻辑和控制应用程序流程。 在EXT中,文件上传通常通过EXT.form.FileField组件实现,这...
这种结合使得前端能够动态地更新数据,同时利用 Struts1.2 的强大控制能力处理复杂的业务流程。 文件名为 "bysj2" 的压缩包可能包含了该图书管理系统的源代码、配置文件、数据库脚本等相关资源。解压后,开发者可以...
"Ext与后台交互"是指在用户操作界面前端时,ExtJS会通过Ajax技术向Struts发送异步请求,Struts处理请求后返回数据,再由Ext更新界面。"Ext与数据库交互"通常指的是ExtJS通过Struts与后台服务器进行数据交换,从而...
在"Ext+struts"的集成中,Struts主要负责处理后端逻辑,响应前端ExtJS组件的请求。 **iBatis** 是一个持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了JDBC的繁琐操作。iBatis提供了一种灵活的方式来...
Ext_struts2是一个结合了Ext JS前端框架与Struts2后端MVC框架的整合应用,旨在提升Web应用的用户体验和开发效率。Struts2是一个强大的、基于Java的开源MVC框架,它提供了模型-视图-控制器模式的实现,以帮助开发者...
将 Ext 与 Struts2 结合使用,可以充分利用两者的优点,实现前后端分离,提升用户体验并简化开发流程。然而,集成过程中可能会遇到 jar 包冲突的问题。这通常是因为不同库之间的依赖版本不一致,导致类加载器无法...
当Session超时,服务器会清除相关的Session数据,并在后续的请求中告知EXT前端。 此外,为了提供更好的用户体验,一些应用会选择在Session即将到期时提醒用户,而不是突然跳转到登录页。这可以通过在后台定期发送...
总之,"Ext+Struts2的学生成绩管理系统"是两种技术的完美结合,既实现了富客户端的交互体验,又保证了后端的稳定和高效。对于学习者来说,这个项目不仅提供了实践平台,也是深入理解这两种技术的绝佳案例。
当用户在EXT JS界面执行操作时,如点击添加图书按钮,EXT JS会发送一个Ajax请求到服务器,Struts或Spring MVC接收到请求后,调用相应的业务逻辑,处理完后返回结果,EXT JS再根据返回的数据更新界面。 例如,...
总结来说,"ext json struts 完整无错源码" 是一个很好的学习资源,可以帮助开发者了解如何将现代前端技术(EXT)与后端 Java Web 开发框架(Struts)相结合,通过 JSON 进行数据交换,创建高效、动态的 Web 应用...
创建对应的Struts2 Action,处理EXT发起的请求。Action可以使用Struts2的拦截器进行数据校验、事务管理等操作。 5. **EXT Direct** EXT Direct是EXT和服务器之间通信的一种高效方式,它允许直接调用服务器端的...
在IT行业中,EXT和Struts2是两个非常重要的框架,它们分别用于构建用户界面和处理后端业务逻辑。本文将详细介绍EXT与Struts2的结合使用,并通过标题和描述中的关键词,如“树”、“gridpanel”、“分页”、“文件...
### 搭建EXTJS和STRUTS2框架(ext和struts2简单实例) #### 一、概述 本文档将详细介绍如何在Java Web项目中搭建EXTJS和STRUTS2框架,并通过一个简单的实例来展示如何使这两个技术协同工作。EXTJS是一个用于构建交互...
EXT 和 Struts2 是两种广泛使用的 Java Web 开发框架,它们在构建动态、交互式的用户界面和处理服务器端业务逻辑方面都有出色的表现。EXT 主要是前端的 JavaScript 框架,提供丰富的组件库和强大的数据绑定功能,而 ...
总的来说,通过结合Ext3.2和Struts,我们可以构建一个功能强大且用户体验良好的文件上传系统,同时处理好中文乱码问题,确保数据的正确性。实践过程中,一定要注意安全性和性能优化,以提供稳定、可靠的Web服务。
总结起来,"ext struts2 swfupload 跨域文件上传"是关于如何使用EXTJS构建前端界面,结合Struts2处理服务器端逻辑,利用SwfUpload的跨域能力实现文件上传的一种解决方案。这个过程中涉及的技术包括JavaScript编程、...
总结来说,SSI+EXT组合提供了完整的前后端开发解决方案,Struts2处理请求,Spring管理业务逻辑,Ibatis负责数据库操作,而Ext JS则为用户提供了友好的交互界面。这个项目实例对于学习和理解这些技术的集成以及实际...
4. 表单处理:EXTJS2的表单组件可以与Struts2的表单验证相结合,实现客户端和服务器端的双重验证。 5. 动态加载:EXTJS2的Ajax功能可以实现页面部分内容的异步加载,提升用户体验。 6. 页面布局:EXTJS2的布局管理...