配置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(){
}
分享到:
相关推荐
extjs整合struts2,适用于各类想要学习ext和struts2的人,希望你们能够挖掘出深层次的东西来
搭建EXTJS和STRUTS2框架(ext和struts2简单实例)
ext结合struts2.0实现文件上传,代码详细,加载项目即可以看到效果。
Ext+struts+ibatis 完整项目 项目虽小五脏俱全
ext EXT json struts 完整无错源码 ext ext 学习ext的来 ext ext
EXT 结合struts2,用json方式与ACTION通信,非常经典的入门例子! 里面对ext.extend用的很好!
支持创建班级,学生,管理信息的增删查改。
ext+struts1.2图书管理系统让你了解ext框架以及与struts1.2的整合
Ext_struts2希望对很多人又帮助
ext+struts+spring图书管理的小例子 欢迎下载
ext+struts2 是实现文件上传。源码,很好的列子,请大家放心下载。
Ext+struts Ext学生管理系统 Ext与后台交互 Ext与数据库交互《深入浅出》中的最后一个例子
之前要用到Ext和struts2结合,在网上搜了很久一直出错,原来是jar包冲突,现在解决了。
struts-2与ext集成的傻瓜教程希望对新学习ext的朋友有帮助。
Ext+Struts2的学生成绩管理系统,希望对Ext学习者有帮助。
ext struts2 swfupload 跨域文件上传
ExtJs与Struts的整合使用.doc 十分详细的讲解了如何实现Ext与Struts整合使用
ext+struts2整合实现登陆,源码加注释。
用EXT+struts2+spring+hibernate做的一个增删改查实例,主要用到了EXTjs里面的部分组件,用JSON与服务端交互,实现一个增删改查的功能!本地MYsql数据库,sql文件在根目录下面,建好库既可以运行!当然,还是需要在...
struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例