عادة ما تستخدم ملفات تعريف الارتباط والجلسات والمرشحات في تطبيقات الويب. يتم استخدام ملفات تعريف الارتباط والجلسات لحفظ بيانات معينة. تدخل مرشحات المرشحات المفعول بعد أن تقدم المتصفح طلبًا وقبل تنفيذ الخلفية طلبًا محددًا. السبب وراء تجميع هؤلاء الثلاثة هو أنه يتم دمجهم غالبًا ، مثل بعض برامج تسجيل الدخول .
ملفات تعريف الارتباط هي آلية المتصفح ، والجلسة هي آلية الخادم ، ولكن في الواقع ، يتم إنشاء ملفات تعريف الارتباط أيضًا بواسطة الخادم ثم يتم إرجاعها إلى المتصفح ، ولم يتم إنشاؤها بواسطة المتصفح نفسه. عندما يرسل المتصفح طلبًا ، سيجمع ملف تعريف الارتباط معًا إذا كان يحتوي على ملف تعريف ارتباط صالح.
يتم استخدام جميع ملفات تعريف الارتباط لأن بروتوكول HTTP هو في الأصل بروتوكول عديمي الجنسية ، مما يعني أنه من خلال بروتوكول HTTP نفسه ، لا يمكن للخادم تحديد ما إذا كان المتصفح قد وصل إليه من قبل.
أساليب الكتابة للمرشح والخدمة متشابهة. عند كتابة التعليمات البرمجية ذات الصلة ، تحتاج إلى تنفيذ واجهة التصفية وإعادة كتابة الطرق ذات الصلة. عادة ، يتم تغيير طريقة dofilter في كثير من الأحيان. إذا كان رمز المرشح يحتاج إلى فعال بعد الكتابة ، فمن الضروري تكوين تكوينات معينة في web.xml مثل تكوين servlets.
فيما يلي رمز نموذج تسجيل دخول بسيط يجمع بين ملفات تعريف الارتباط والجلسات والخدمات والمرشحات:
حدد فئة كيان المستخدم للعمل كبيانات قاعدة البيانات. يتم استخدام نمط Singleton هنا للتأكد من وجود كائن مثيل واحد فقط:
نماذج الحزمة ؛ / ** * فئة كيان معلومات المستخدم * * Author tuzongxun123 * */ public class UserModel {private String username ؛ كلمة مرور السلسلة الخاصة ؛ // وضع Singleton ، تأكد من وجود مثيل مستخدم واحد فقط usermodel getInstance () {usermodel user = new usermodel ("Zhangsan" ، "123456") ؛ إرجاع المستخدم ؛ } usermodel الخاص (اسم المستخدم ، كلمة مرور السلسلة) {this.userName = username ؛ this.password = كلمة المرور ؛ } السلسلة العامة getUserName () {return username ؛ } السلسلة العامة getPassword () {return password ؛ }} تسجيل دخول المستخدم إلى واجهة index.jsp واستخدم ميزة JSP في إجراء النموذج للحصول على مسار المشروع:
<٪@ page language = "java" import = "java.util.* "http://www.w3. Action = "<٪ = request.getContextPath () ٪>/loginservlet" method = "post"> اسم المستخدم: <input type = "text" name = "username"/> </br> كلمة المرور: <inport type = "password"
servlet الخلفية المقابلة:
حزمة servlettest. استيراد java.io.ioException ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.cookie ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد javax.servlet.http.httpsession ؛ استيراد نماذج. usermodel ؛ يمتد فئة LoginServlet العامة httpservlet {Override المحمية void doget (httpservletrequest req ، httpservletresponse resp) servletexception ، ioException {this.dopost (req ، resp) ؛ } override void dopost (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {String username = req.getParameter ("username") ؛ سلسلة كلمة المرور = req.getParameter ("كلمة المرور") ؛ // محاكاة بيانات قاعدة البيانات usermodel = usermodel.getInstance () ؛ String dbuserName = user.getUserName () ؛ String dbPassword = user.getPassword () ؛ إذا كان (dbusername.equals (اسم المستخدم) && dbpassword.equals (كلمة المرور)) {// كلا من اسم المستخدم وكلمة المرور ، أثبت أن تسجيل الدخول ناجح ، تعيين جلسة HTTPSASTING CATINE و COOKIE = req.getsession () ؛ Session.setAttribute ("اسم المستخدم" ، اسم المستخدم) ؛ Session.setAttribute ("كلمة المرور" ، كلمة المرور) ؛ ملف تعريف الارتباط = ملف تعريف الارتباط الجديد ("اسم المستخدم" ، اسم المستخدم) ؛ cookie cookie2 = ملف تعريف الارتباط الجديد ("كلمة المرور" ، كلمة المرور) ؛ // قم بتعيين وقت تخزين ملفات تعريف الارتباط cookie.setMaxage (60) ؛ cookie2.setMaxage (60) ؛ // إرسال ملفات تعريف الارتباط إلى المستعرض Resp.AddCookie (ملف تعريف الارتباط) ؛ Resp.Addcookie (cookie2) ؛ // طلب التوجيه إلى قائمة المستخدمين req.getRequestDispatcher ("/userlist"). } else {// request request to login page req.getRequestDispatcher ("index.jsp"). } ؛ }} طلب القفز بعد تسجيل الدخول:
حزمة servlettest ؛ استيراد java.io.ioException ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد نماذج. usermodel ؛ الفئة العامة userlistservlet يمتد httpservlet {Override المحمية void doget (httpservletrequest req ، httpservletresponse resp) servletexception ، ioException {this.dopost (req ، resp) ؛ } Override void dopost (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {usermodel user = usermodel.getInstance () ؛ // طباعة بيانات كتاب قائمة المستخدمين في المستعرض resp.getWriter (). الكتابة ("اسم المستخدم:" + user.getUserName () + "،" + "كلمة المرور:" + user.getPassword ()) ؛ }} Project Web.xml التكوين:
<؟ xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "version =" 2.5 "> <!-اسم المشروع عند الوصول- <Srevlet-Class> servlettest.loginservlet </servlet-class> </servlet> <servlet-mapping> <Sradlet-mapping> <stervlet-name> تسجيل الدخول </servlet-name> <Url-pattern>/loginservlet </url-pattern> <Srevlet-Class> servlettest.userlistservlet </servlet-class> </servlet> <servlet-mapping> <sterled-name> قائمة المستخدمين </servlet-name> <url-pattern>/userlist </url-pattern> </rectlet mapping> <! <filter-name> logInfilter </filter-name> <ilter-class> filtertest.filtertest </filter-class> </filter> <filter-mapping> <filter-name> loginfilter </filter-name> <url-pattern>/*</url-pattern> </filter mappapt <lisp-file> index.jsp </iship-file> </swith-file-list> </web-app>
رمز مرشح جافا:
حزمة مرشحات استيراد java.io.ioException ؛ استيراد javax.servlet.filter ؛ استيراد javax.servlet.filterchain ؛ استيراد javax.servlet.filterConfig ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.servletrequest ؛ استيراد javax.servlet.servletResponse ؛ استيراد javax.servlet.http.cookie ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد نماذج. usermodel ؛ FilterTest Public FilterTest تصفية {Override public void Dride () {} Override public void dofilter (servletRequest request ، servletResponse ، سلسلة filterchain) يلقي iOexception ، servleTexception {// إطلاق HttPservletRequest مباشرة لطلب loginspletrequest. httpservletresponse resp = (httpservletresponse) ؛ String uri = req.getRequesturi () ؛ if ("/cookieandfiltertest/loginservlet".equals(uri) || يعود؛ } // إذا لم يكن طلب تسجيل الدخول ، فحدد ما إذا كان هناك ملفات تعريف الارتباط ملفات تعريف الارتباط [] ملفات تعريف الارتباط = req.getCoOkies () ؛ if (ملفات تعريف الارتباط! = null && cookies.length> 0) {String username = null ؛ كلمة كلمة مرور = فارغة ؛ // حدد ما إذا كان اسم المستخدم وكلمة المرور في ملف تعريف الارتباط متوافقًا مع قاعدة البيانات. إذا كان الأمر ثابتًا ، فقم بإطلاقه ، وإعادة توجيه الطلب إلى صفحة تسجيل الدخول لـ (ملفات تعريف الارتباط ملفات تعريف الارتباط: ملفات تعريف الارتباط) {if ("username" .equals (cookie.getName ())) {username = cookie.getValue () ؛ } if ("password" .equals (cookie.getName ())) {password = cookie.getValue () ؛ }} usermodel user = usermodel.getInstance () ؛ if (user.getuserName (). equals (username) && user.getPassword (). يساوي (كلمة المرور)) {chain.dofilter (طلب ، استجابة) ؛ يعود؛ } آخر {// إعادة توجيه إلى واجهة تسجيل الدخول req.getRequestDispatcher ("/index.jsp"). يعود؛ }} آخر {req.getRequestDispatcher ("/index.jsp"). إلى الأمام (req ، resp) ؛ يعود؛ }} Override public void init (filterConfig arg0) يلقي servletexception {}}ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون من المفيد للجميع تعلم برمجة Java.