في الآونة الأخيرة ، قمت بعمل مشروع له متطلبات. أريد تنفيذ وظيفة تسجيل الدخول التلقائية. من خلال التحقق من المعلومات ذات الصلة ، أخطط لاستخدام مراقبة الجلسة للقيام بذلك. فيما يلي قائمة بطرق تكوين الشاشة:
1. أضف الرمز التالي إلى ملف Web.xml الخاص بالمشروع:
<!-أضف مستمع جلسة-> <stanker> <cleder-class> مسار المستمع <//مستمعية> </leader>
2. اكتب فصول جافا.
تنفذ SessionListener من الفئة العامة httpsessionListener {public void sessioncreated (httpsessionevent arg0) {// simpledateFormat تنفيذ عندما يتم إنشاء الجلسة simpleformat simpleformat = new simpleTformat ("mm-ss-ms") ؛ string nowtimes = simpleformat.format (تاريخ جديد ()) "+nowtimes+" _ "+u) ؛ httpsession ses = arg0.getSession () ؛ string id = ses.getid ()+" _ "+ses.getCreationTime () SimpleDateFormat ("MM-SS-MS") ؛ سلسلة nowtimes = simpleformat.format (New Date ()) ؛ //system.out.println لقد انتهت صلاحيتها .. وقت الانتهاء: "+Nowtimes) ؛}}بعد اكتمال التكوين ، نجحت في إدخال طريقة SessionDestroyed بعد انتهاء الجلسة. كنت مستعدًا لأداء عملية القفز على الصفحة. اكتشفت فجأة كيفية كتابة قفزة. لقد صدمت واستمرت في تصفح الإنترنت لأطلب من السيد. لقد وجدت أن هذا الشاشة قد تم مع بعض معالجة إحصائيات الخلفية ولم تستطع إدراك وظيفة قفزة الصفحة.
لا يمكنني التخلي عن هذه الطريقة فقط والبدء في استخدام المرشحات لتنفيذها
1. أضف تكوين المرشح في web.xml
<Ivilter> <ilter-name> SessionFilter </filter-name> <ilter-class> com.orchestrall.web.helper.session.sessionfilter </filter-class> </filter> <filter-mapping> <ilter-name> sessionfilter </filter-name> <Url-pattern>
2. قم بإنشاء فئة SessionFilter جديدة لتنفيذ واجهة التصفية.
SessionFilter Public Class SessionFilter تصفية {public void destroy () {// todo method method method clud} public void dofilter (servletrequest request ، servletRespons httpresponse = (httpservletresponse) استجابة ؛ جلسة httpsession = httprequest.getsessession () ؛ // تسجيل الدخول إلى urlstring loginurl = httprequest.getContextPath () + "/admin/login.jsp"ring url = httprequest.getReiSty url.subString (url.lastindexof ("/")) ؛ // معالجة المهلة ، فإن مهلة طلب AJAX تحدد حالة المهلة ، وستعيد مهلة طلب الصفحة مطالبة وإعادة التوجيه إذا (path.indexof (". (httprequest.getheader ("x-requested-with")! = null && httprequest.getheader ("x-requested-with"). "timeout") ؛ httpresponse.adddheader ("loginPath" ، loginurl) ؛ chain.dofilter (طلب ، استجابة) ؛ // مستحيلة ، وإلا فإن الطلب سوف يخطئ} آخر {string str = "<script language = 'javaScript'> ALERT ('Session Exples ، يرجى تسجيل الدخول مرة أخرى') ؛ "'؛ </script>" ؛ response.setContentType ("text/html ؛ charset = utf-8") ؛ // حل المحاولة الصينية المحببة {printwriter الكاتب = response.getWriter () ؛ writer.write (str) ؛ crins.flush () ؛ clats.close () ؛} {chain.dofilter (طلب ، استجابة) ؛}}@Overridepublic void init (FilterConfig Arg0) يلقي ServleTexception {// todo method method method}}}3. العميل JS ، يستخدم لمهلة جلسة Ajax طلب Ajax
ل jQuery
<script type = "text/javaScript"> $ (document) .ajaxComplete (function (event ، xhr ، settings) {if (xhr.getResponseHeader ("sessionStatus") == "timeout") {if (xhr.getResponseHeader ("loginatpath") {alert ( window.location.replace (XHR.GetResponseHeader ("loginpath") ؛ </script>طلب AJAX لـ extjs
ext.ajax.on ('requestComplete' ، checkUsersessionStatus ، this) ؛ function checkusersessionStatus (conn ، response ، reports) {if (response.getResponseHeader ("sessionStatus") == 'timeout') Response.getResponseHeader ("LoginPath") ؛} آخر {Alert ("Termer Timeout ، يرجى تسجيل الدخول مرة أخرى!") ؛}}}إذا لم يتأثر طلب Ajax معين بالطريقة العالمية ، فعند استخدام طريقة $ .ajax () ، يمكن تعيين العالم في المعلمة على خطأ. رمز jQuery كما يلي:
$ .ajax ({url: "test.html" ، Global: false // لا تثير حدث Ajax Global})ما سبق هو رمز المثال الذي قدمه لك المحرر أن الجلسة ستقفز تلقائيًا إلى صفحة تسجيل الدخول بعد انتهاء صلاحيتها. آمل أن يكون ذلك مفيدًا للجميع. إذا كنت تريد معرفة المزيد ، فيرجى الانتباه إلى موقع Wulin.com!