dwz ajax session超時跳轉登陸頁(struts2自定義阻礙器)

培養奇才的先決前提是公共的聰明之前的項目用的是springsecurity3.0,session超時主動跳轉的登陸頁(這個頁面可配),後來頁面前端用dwz框架了,各種提交都是ajax提交,session超時再點擊就會報錯,我要實現的是ajax提交被阻礙,判定session是否超時,如果超時返回到登陸頁面。 javascript


讓咱們保護公允,那麼咱們將會得到更多的。1.定義struts2阻礙器(網上例子不少) html


代碼以下: 前端


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類返回給前臺。 java


2.而後設備struts.xml web


代碼以下: ajax


<!-- 用於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>


?聲明此阻礙器,並放到客棧最底層,讓其起首走這個阻礙器。 spring


重視:調試的時辰先把session超不時候設置爲1分鐘,這個能夠在web.xml裏設置: 微信


<!-- session超時定義,單位爲分鐘 -->
	<session-config>
		<session-timeout>20</session-timeout>
	</session-config>


3.測試: session


登陸後,等一分鐘,點擊呈現登陸超時,並跳轉到了登陸頁面。 框架


如果想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迪斯雷利




更多網站建設信息、網站開發資訊,敬請諮詢百微信息科技,021-57700304

相關文章
相關標籤/搜索