Struts2自訂攔截器執行個體—Session逾時的處理

來源:互聯網
上載者:User

版本:struts2.1.6

執行個體功能:當使用者登陸後,session逾時後則返回到登陸頁面重新登陸。

為了更好的實現此功能我們先將session失效時間設定的小點,這裡我們設定成1分鐘

修改web.xml

<session-config><br /><session-timeout>1</session-timeout><br /></session-config>

 

此執行個體用到的jsp頁面及登陸所涉及到的相關代碼請參考:

Struts2自訂攔截器執行個體—登陸許可權驗證

 

實現自訂攔截器類

package com.ywjava.interceptor;</p><p>import java.util.Map;</p><p>import com.opensymphony.xwork2.Action;<br />import com.opensymphony.xwork2.ActionContext;<br />import com.opensymphony.xwork2.ActionInvocation;<br />import com.opensymphony.xwork2.interceptor.AbstractInterceptor;<br />import com.ywjava.action.LoginAction;<br />import com.ywjava.utils.Constants;</p><p>public class SessionIterceptor extends AbstractInterceptor {</p><p>@Override<br />public String intercept(ActionInvocation actionInvocation) throws Exception {<br />ActionContext ctx = ActionContext.getContext();<br />Map session = ctx.getSession();<br />Action action = (Action) actionInvocation.getAction();<br />if (action instanceof LoginAction) {<br />return actionInvocation.invoke();<br />}<br />String userName = (String) session.get(Constants.USER_SESSION);<br />if (userName == null) {<br />return Action.LOGIN;<br />} else {<br />return actionInvocation.invoke();<br />}<br />}</p><p>}<br />

 

struts.xml中定義並使用此攔截器

<?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE struts PUBLIC<br />"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"<br />"http://struts.apache.org/dtds/struts-2.1.dtd"><br /><struts><br /><package name="authority" extends="struts-default"></p><p><!-- 定義一個攔截器 --><br /><interceptors><br /><interceptor name="authority"<br />class="com.ywjava.interceptor.LoginInterceptor"><br /></interceptor><br /><interceptor name="sessionout"<br /> class="com.ywjava.interceptor.SessionIterceptor"></interceptor><br /><!-- 攔截器棧 --><br /><interceptor-stack name="mydefault"><br /><interceptor-ref name="defaultStack" /><br /><interceptor-ref name="authority" /><br /><interceptor-ref name="sessionout"/><br /></interceptor-stack><br /></interceptors></p><p><!-- 定義全域Result --><br /><global-results><br /><!-- 當返回login視圖名時,轉入/login.jsp頁面 --><br /><result name="login">/login.jsp</result><br /></global-results></p><p><action name="loginform"<br />class="com.ywjava.action.LoginFormAction"><br /><result name="success">/login.jsp</result><br /></action></p><p><action name="login" class="com.ywjava.action.LoginAction"><br /><result name="success">/welcome.jsp</result><br /><result name="error">/login.jsp</result><br /><result name="input">/login.jsp</result><br /></action></p><p><action name="show" class="com.ywjava.action.ShowAction"><br /><result name="success">/show.jsp</result><br /><!-- 使用此攔截器 --><br /><interceptor-ref name="mydefault" /><br /></action></p><p></package><br /></struts>

 

當我們登陸後一分鐘不做任何操作重新整理後則會跳轉到登陸頁面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.