تسجيل الدخول التلقائي هو مساعدة المستخدمين على تسجيل الدخول دون إدخال اسم المستخدم وكلمة المرور مرة أخرى عند استخدام صفحة الويب هذه عدة مرات.
يعني تسجيل الدخول التلقائي أن المستخدم يحفظ معلومات تسجيل الدخول الخاصة بالمستخدم وشخص ملف تعريف ارتباط ملفات محلية.
الاسم ، القيمة - ملف تعريف الارتباط الجديد (المفتاح ، القيمة) ؛
قيمة Path-Default هي المسار الذي يوجد فيه 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.
ولا يمكنك تسجيل الدخول تلقائيًا عند تسجيل الخروج.
نقاط المعرفة التكميلية:
تحقق من قيام المستخدم بتسجيل الدخول
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>
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.