تشارك هذه المقالة الكود التفصيلي لـ Java للتحقق مما إذا كان المستخدم قد تم تسجيل الدخول ويدرك تسجيل الدخول التلقائي للرجوع إليه. المحتوى المحدد كما يلي
1. تحقق من أن المستخدم قد تم تسجيل الدخول بالفعل
package cn.hongxin.filter ؛ استيراد java.io.ioException ؛ استيراد javax.servlet.filter ؛ استيراد javax.servlet.filterchain ؛ استيراد javax.servlet.filterConfig ؛ import javax.servlet.servletexception ؛ javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ import javax.servlet.http.httpsession ؛ تنفذ LogInfilter من الفئة العامة مرشح {public void init (filterConfig filterConfig) يلقي servletexception {} public void dofilter (servletRequest request ، servletResponse ، سلسلة filterChain) يلقي iOexception ، servletexception {// تأليف الطلب إلى httpletrequest. // الحصول على جلسة httpsession ss = req.getSession () ؛ // احصل على المستخدم من الجلسة if (ss.getAttribute ("user") == null) {system.err.println ("أنت لم يتم تسجيل الدخول حتى الآن") ؛ req.getSession (). setAttribute ("msg" ، "الرجاء تسجيل الدخول أولاً") ؛ // إعادة توجيه لتسجيل الدخول httpservletresponse resp = (httpservletresponse) ؛ Resp.SendRedirect (req.getContextPath ()+"/index.jsp") ؛ [W2]} آخر {// release chain.dofilter (طلب ، استجابة) ؛ }} public void Destroy () {}}تكوين في web.xml والنظر في JSPS/*:
<Ivilter> <iliter-name> تسجيل الدخول </filter-name> <lipter-class> cn.itcast.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> login </filter-name> </filter mapping>
2. إدراك تسجيل الدخول التلقائي
تسجيل الدخول التلقائي هو مساعدة المستخدمين على تسجيل الدخول دون إدخال اسم المستخدم وكلمة المرور مرة أخرى عند استخدام صفحة الويب هذه عدة مرات.
وهذا يعني أن المستخدم يحفظ معلومات تسجيل دخول المستخدم وشخصه إلى ملف تعريف ارتباط ملف محلي.
الاسم ، قيمة ملفات تعريف الارتباط الجديدة (المفتاح ، القيمة) ؛
PATH - القيمة الافتراضية هي المسار الذي يوجد فيه serlvet الذي يحفظ حاليًا ملف تعريف الارتباط.
إذا كان ملف تعريف الارتباط في مثل هذا المسار: http: // loclhost: 8080/project/abc/aservlet ، فإن مسار ملف تعريف الارتباط هو: http: // loclhost/project/abc
ثم يعني:
يمكن فقط للخدمة الموجودة في دليل HTTP: // loclhost/project/ABC قراءة قيمة ملف تعريف الارتباط هذا.
لو:
احفظ فئة ملفات تعريف الارتباط: http: // loclhost: 8080/project/a/b/aservlet ، المسار الافتراضي لملف تعريف الارتباط هو ؛ http: // loclhost/project/a/b
الخطوة 1: تطوير صفحة تسجيل الدخول
<c: اختر> <c: عند اختبار = "$ {$ {sessionscope.name}"> <form name = "x" method = "post" action = "<c: url value = '/loginservlet'/>"> name: <input type = "text" name = "name"/> <br/> auto: <input type = "radio" type = "radio" name = "auto" value = "1"> 1 day <br/> <input type = "radio" name = "auto" value = "7"> 1 week <br/> <input type = "submit"/> </c: when> <c: ell c: value = '/loginservlet' //> "> loginservlet '/loginservlet' //"> loginservlet </a> </c: خلاف ذلك> </c: اختر>الخطوة 2: حفظ ملفات تعريف الارتباط بنجاح
DOPOST الفراغ العام (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {// استلام اسم المستخدم اسم المستخدم = request.getParameter ("name") ؛ String Auto = request.getParameter ("Auto") ؛ // وضع معلومات المستخدم في Session request.getSession (). setAttribute ("name" ، name) ؛ // الدفاع عما إذا كان Auto IS -1 if (! auto.equals (" -1")) {int day = integer.parseint (auto) ؛ // 1 | 7 int Seconds = 60*60*24*Day ؛ // DECLARE Cookie Cookie C = New Cookie ("autologin" ، name) ؛ C.SetMaxage (ثواني) ؛ C.SetPath (request.getContextPath ()) ؛ // Save Cookie Response.addcookie (C) ؛ }}الخطوة 3: يجب تحقيق تسجيل الدخول التلقائي إذا كنت بحاجة إلى الوصول إلى أي صفحة في هذا الموقع.
اكتب Scrutinizer للنظر في كل url =/*. اقرأ جميع ملفات تعريف الارتباط في Dofilter. هل يوجد ملف تعريف ارتباط باسم Autologin اسم؟
اتركي دائما.
Public Void dofilter (طلب ServletRequest ، استجابة servletResponse ، سلسلة filterchain) يلقي ioexception ، servletexception {// قراءة ملف تعريف الارتباط هنا httpservletrequest req = (httpservletrequest) طلب ؛ // الحصول على جميع ملفات تعريف الارتباط ملفات تعريف الارتباط [] cs = req.getCoOkies () ؛ if (cs! = null) {for (cookie c: cs) {if (c.getName (). equals ("autologin")) {// إذا كان هناك ملف تعريف ارتباط يتم تسجيله تلقائيًا في قيمة السلسلة = استراحة؛ }}} // بغض النظر عما إذا كان يتم تسجيله تلقائيًا إلى سلسلة. dofilter (طلب ، استجابة) ؛ }الرابع يتضمن: تكوين جميع عناوين URL =/* في web.xml
<Ivilter> <ilter-name> auto </filter-name> <ilter-class> cn.itcast.filter.autofilter </filter-class> </filter> <filter-mapping> <filter-name> auto </filter-name>
الخطوة 5: خروج التنمية
System.err.println ("خروج المستخدم") ؛ // حذف request.getSession (). ملف تعريف الارتباط C = ملف تعريف الارتباط الجديد ("autologin" ، "ddd") ؛ C.SetMaxage (0) ؛ C.SetPath (request.getContextPath ()) ؛ استجابة. addcookie (c) ؛ // request.getSession (). removeAttribute ("name") ؛ Response.sendRedirect (request.getContextPath ()+"/index.jsp") ؛الخطوة 6: تحسين الرمز
نظرًا لأن المستخدم سيدخل أيضًا طريقة dofilter لـ AutoFiilter عند تسجيل الدخول يدويًا ، وقراءة جميع ملفات تعريف الارتباط لاجتيازها مرة واحدة. وهذا اجتياز زائدة عن الحاجة للمستخدم.
لذلك ، يجب استخدام عنوان URL Loginservet في دولة Dofiler.
ولا يمكنك تسجيل الدخول تلقائيًا عند تسجيل الخروج.
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.