以前的项目用的是springsecurity3.0,session超时自动跳转的登录页(这个页面可配),后来页面前端用dwz框架了,各种提交都是ajax提交,session超时再点击就会报错,我要实现的是ajax提交被拦截,判断session是否超时,如果超时返回到登录页面。
1.定义struts2拦截器(网上例子很多)
代码如下:
package com.sf.emp.utils;
import javax.servlet.http.HttpServletRequest;
import org.springside.modules.utils.web.struts2.Struts2Utils;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* 判断session是否超时的拦截器
* 超时跳到登录页面
* @author gshen
*/
public class SessionIterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 7579862236766378267L;
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("into 拦截器 。。。。。");
HttpServletRequest request = Struts2Utils.getRequest();
if ("XMLHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With")) || request.getParameter("ajax") != null) {
if(Struts2Utils.getSession() == null || LoginUserHolder.getLoginUser() == null){
Ret.ret301("请求超时!请重新登录!");
return null;
}
}
return actionInvocation.invoke();
}
}
注意:Ret.ret301("");方法封装的是dwz框架的ajax相应字符串,类型是301,例如:{"statusCode":"301", "message":"Session Timeout! Please re-sign in!"},用PrintWriter类返回给前台。
2.然后配置struts.xml
代码如下:
<!-- 用于CRUD Action的parent package -->
<package name="crud-default" extends="convention-default">
<!-- 基于paramsPrepareParamsStack,
增加store interceptor保证actionMessage在redirect后不会丢失 -->
<interceptors>
<interceptor name="sessionout" class="com.sf.emp.utils.SessionIterceptor" />
<interceptor-stack name="crudStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
<interceptor-ref name="sessionout"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="crudStack" />
</package>
声明此拦截器,并放到堆栈最底层,让其首先走这个拦截器。
注意:调试的时候先把session超时时间设置为1分钟,这个可以在web.xml里设置:
<!-- session超时定义,单位为分钟 -->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
3.测试:
登录后,等一分钟,点击出现登录超时,并跳转到了登录页面。
如果想session超时之后设置页面不跳转,而是弹出框登录,请在dwz的初始化页面内修改:
<script type="text/javascript">
$(function(){
DWZ.init("dwz.frag.xml", {
// loginUrl:"loginsub.html", loginTitle:"登录", // 弹出登录对话框
loginUrl:"login.html", // 跳到登录页面
statusCode:{ok:200, error:300, timeout:301}, //【可选】
pageInfo:{pageNum:"page.pageNum", numPerPage:"page.numPerPage", orderField:"orderField", orderDirection:"orderDirection"}, //【可选】
debug:false, // 调试模式 【true|false】
callback:function(){
initEnv();
$("#themeList").theme({themeBase:"themes"});
}
});
});
</script>
这样就完成了,原创希望能给大家带来帮助,转载请著名出处http://shen84121062.iteye.com/blog/1166554
分享到:
相关推荐
dwz框架实现拦截器 session超时跳转登陆页面 DWZ框架 struts2拦截器 session超时
Ajax请求session超时处理流程 java服务器端处理: SessionValidateFilter中修改: if (ServerInfo.isAjax(request)) { request.setAttribute("statusCode", 301); request.setAttribute("message", "Session ...
dwz+struts+仿habernate
基于注解的Spring MVC 3 结合DWZ 框架,编写的拦截器判断session是否过期,有需要的可以下载。
DWZ的demo.使用java后台实现增删改查以及分页。含有mysql数据库脚本
通过自定义标签,简化dwz table分页
dwz的开发实例,使用struts2框架
ajax自动刷新页面 类似于论坛注册时的 自动数字倒计时 自动跳转 适合新人看看
dwz官方例子 开发环境: 1) 数据库:mysql 请修改 src/hibernate_mysql.cfg.xml这个文件的数据库连接 创建数据库dwz4j 导入测试数据:db/dwz4j.sql mysql -u root -p dwz4j < dwz4j.... session超时,弹出登入对话框
dwz 解决200错误自定义的函数使用
dwz+struts框架 现在web主流开发框架 包括一些简单的功能 如:对数据库的设计、分页的现实、以及框架的搭建
基于WABACUS3.5+Struts2.3.8+DWZ1.4.4程序框架 修改简单改造了WABACUS3.5:实现了在Wabacus.report.config文件中设置报表文件配置XML和报表资源XML文件时文件路径和文件名称都可以使用通配符的功能,以方便以后将...
DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. DWZ富客户端框架设计目标是简单实用、扩展方便、快速开发、RIA思路、轻量级 DWZ框架支持用html扩展的方式来代替...
dwz页面图片显示jsdwz页面图片显示jsdwz页面图片显示js
•对于初学者不建议看DWZ全部源码,但还是非常有必要看看dwz.ui.js和dwz.ajax.js •可以从google code下载dwz_thinkphp版本,结合php后台去理解DWZ和服务器端的交互方式 DWZ区别于其它JS框架,最大的优点 •完全...
三大框架整合dwz框架,spring,hibernate,struts2,系统相对比较完善;
1、该系统处于部分完善 部分模块的功能已经实现DWZ框架中的增删该查 高级查询 消息提示 分页等等功能 2、完成部分project、projectRenew
完整的java dwz+spring2.5+hibernate3+struts2项目,并有项目的模版生成工具,有具体的使用说明
DWZ富客户端框架(jQuery RIA framework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架。 DWZ富客户端框架设计目标是简单实用、扩展方便、快速开发、RIA思路、轻量级。 DWZ框架支持用HTML扩展的方式来代替...
DWZ富客户端框架(jQuery RIA framework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架。 DWZ富客户端框架设计目标是简单实用、扩展方便、快速开发、RIA思路、轻量级。 DWZ框架支持用HTML扩展的方式来代替...