المرشحات في Servlets وJSP هي فئات Java، والغرض من وجودها هو كما يلي:
الاعتراض عند طلب الوصول إلى مورد الواجهة الخلفية
إدارة الاستجابات التي يتم إرجاعها من الخادم إلى العميل
يتم سرد العديد من أنواع المرشحات الشائعة أدناه:
مرشح المصادقة
مرشح ضغط البيانات
مرشح التشفير
عوامل التصفية التي تؤدي إلى أحداث الوصول إلى الموارد
مرشح تحويل الصور
مرشحات تسجيل الدخول والمصادقة
مرشح سلسلة نوع MIME
مرشح الرمز المميز
مرشحات XSL/T لتحويل محتوى XML
سيتم إدراج عامل التصفية في ملف web.xml وتعيينه لاسم servlet أو ملف JSP أو نمط URL. يمكن العثور على ملف وصف النشر web.xml في الدليل <Tomcat-installation-directory>conf.
عندما تبدأ حاوية JSP تطبيق ويب، فإنها تقوم بإنشاء مثيل لكل عامل تصفية، ويجب الإعلان عن عوامل التصفية هذه في ملف واصف النشر web.xml وتنفيذها بالترتيب الذي تم الإعلان عنه به.
المرشح هو فئة Java التي تقوم بتنفيذ واجهة javax.servlet.Filter. تحدد واجهة javax.servlet.Filter ثلاث طرق:
رقم سري | الطريقة والوصف |
---|---|
1 | public void doFilter (ServletRequest, ServletResponse, FilterChain) ستستدعي الحاوية هذه الطريقة عندما يمر طلب/استجابة عبر سلسلة التصفية، لأن العميل يطلب الموارد في نهاية السلسلة. |
2 | public void init(FilterConfig filterConfig) تستدعي الحاوية هذه الطريقة للإشارة إلى وضع عامل التصفية في الخدمة |
3 | تدمير الفراغ العام () يتم استدعاء هذه الطريقة بواسطة الحاوية للإشارة إلى إزالة عامل التصفية من الخدمة |
سيقوم هذا المثال بطباعة عنوان IP وتاريخ ووقت كل وصول إلى ملف JSP. بالطبع، هذا مجرد مثال بسيط لإعطائك فكرة عن الاستخدام البسيط للمرشح، ولكن يمكنك استخدام هذه المفاهيم لإنشاء برامج أكثر تعقيدًا بنفسك.
// تقديم حزمة Java import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*; // تنفيذ فئة التصفية public class LogFilterlets Filter { public void init( FilterConfig config) throws ServletException{ // الحصول على معلمات التهيئة String testParam = config.getInitParameter("test-param"); // طباعة معلمات التهيئة System.out.println("Test Param: " + testParam); public void doFilter(ServletRequest request, ServletResponse Response, FilterChain chain) throws java.io.IOException, ServletException { // احصل على عنوان IP للعميل String ipAddress = request.getRemoteAddr(); // إخراج عنوان IP والوقت الحالي System.out.println("IP "+ ipAddress + ", Time " + new Date().toString()); // تمرير سلسلة مرشح الطلب chain.doFilter(request,response); تم استدعاء الخادم قبل الإزالة. */ }}
ترجمة ملف LogFilter.java، ثم قم بوضع ملف الفئة المترجمة في الدليل <Tomcat Installation Directory>/webapps/ROOT/WEB-INF/classes.
يتم تعريف عوامل التصفية ثم تعيينها إلى عنوان URL أو اسم ملف JSP، تمامًا مثل كيفية تعريف servlets وتعيينها. في ملف وصف النشر web.xml، استخدم العلامة <filter> لتعيين عامل التصفية:
<filter> <filter-name>LogFilter</filter-name> <filter-class>LogFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value >معلمة التهيئة</param-value> </init-param></filter><filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
سيتم تطبيق عامل التصفية أعلاه على جميع برامج servlets وJSP لأننا حددنا "/*" في التكوين. يمكنك أيضًا تحديد مسار servlet أو JSP إذا كنت تريد فقط تطبيق عامل التصفية على عدد قليل من servlet أو برامج JSP.
الآن، قم بالوصول إلى صفحة servlet أو JSP كالمعتاد، وستجد سجلاً لهذا الوصول في سجل الخادم. يمكنك أيضًا استخدام مسجل Log4J لتسجيل الدخول إلى ملفات أخرى.
يمكن لتطبيق الويب الخاص بك تحديد العديد من المرشحات المختلفة. الآن بعد أن تم تعريف مرشحين، AuthenFilter وLogFilter، فإن الخطوات الأخرى هي نفسها كما كانت من قبل، باستثناء إنشاء تعيين مختلف، مثل هذا:
<filter> <filter-name>LogFilter</filter-name> <filter-class>LogFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value >معلمة التهيئة</param-value> </init-param></filter> <filter> <filter-name>AuthenFilter</filter-name> <filter-class>AuthenFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value>معلمة التهيئة</param-value> </init-param> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping> <filter-mapping> <filter-name>AuthenFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
يحدد ترتيب تعيين عناصر <filter> في web.xml الترتيب الذي تطبق به الحاوية هذه المرشحات. لعكس ترتيب التطبيق، ما عليك سوى عكس الترتيب الذي يتم به تعريف عناصر <filter> في web.xml.
على سبيل المثال، سيطبق المثال أعلاه LogFilter أولاً ثم AuthenFilter، لكن المثال التالي سيعكس ترتيب التطبيق:
<filter-mapping> <filter-name>AuthenFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping> <filter-mapping> <filter-name>LogFilter</filter -الاسم> <url-pattern>/*</url-pattern></filter-mapping>