1.定義struts2攔截器(網(wǎng)上例子很多)
代碼如下:
package rt.intercepter;import java.util.Map;import javax.servlet.http.HttpServletRequest;import rt.pojo.UserInfo;import rt.util.Struts2Utils;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginValidate extends AbstractInterceptor { /** * */ PRivate static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("interceptor intercept"); Map<String, Object> session = invocation.getInvocationContext().getSession(); UserInfo userInfo = (UserInfo) session.get("userInfo"); HttpServletRequest request = Struts2Utils.getRequest(); if ("xmlHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With")) || request.getParameter("ajax") != null) { if(null == Struts2Utils.getSession() || null == userInfo){ Struts2Utils.getResponse().getWriter().write("{/"statusCode/":/"301/", /"message/":/"會(huì)話已過期!請(qǐng)重新登錄!/"}"); return null; } } return invocation.invoke(); }}
2、配置攔截器
<!-- 用于CRUD Action的parent package --> <package name="crud-default" extends="convention-default"> <!-- 基于paramsPrepareParamsStack, 增加store interceptor保證actionMessage在redirect后不會(huì)丟失 --> <interceptors> <span style="color: #ff0000;"><interceptor name="sessionout" class="rt.intercepter.LoginValidate" /></span> <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" /> <span style="color: #ff0000;"><interceptor-ref name="sessionout"/></span> </interceptor-stack> </interceptors> <default-interceptor-ref name="crudStack" /> </package>
3.測(cè)試:
登錄后,等一分鐘,點(diǎn)擊出現(xiàn)登錄超時(shí),并跳轉(zhuǎn)到了登錄頁面。
如果想session超時(shí)之后設(shè)置頁面不跳轉(zhuǎn),而是彈出框登錄,請(qǐng)?jiān)赿wz的初始化頁面內(nèi)修改:
<script type="text/Javascript"> $(function(){ DWZ.init("dwz.frag.xml", { loginUrl:"login_dialog.html", loginTitle:"登錄", // 彈出登錄對(duì)話框 //loginUrl:"login.jsp", // 跳到登錄頁面 statusCode:{ok:200, error:300, timeout:301}, //【可選】 keys: {statusCode:"statusCode", message:"message"}, //【可選】 pageInfo:{pageNum:"pageNum", numPerPage:"numPerPage", orderField:"orderField", orderDirection:"orderDirection"}, //【可選】 debug:false, // 調(diào)試模式 【true|false】 callback:function(){ initEnv(); $("#themeList").theme({themeBase:"themes"}); setTimeout(function() {$("#sidebar .toggleCollapse div").trigger("click");}, 10); } }); }); </script>
這樣就完成了,希望能給大家?guī)韼椭?
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注