ماهو فلتر او تصفية Servlet في الإقلاع او التمهيد الربيع Spring Boot Servlet Filter#

ماهو فلتر او تصفية Servlet في الإقلاع او التمهيد الربيع 

Spring Boot  Servlet Filter#


ماهو فلتر او تصفية Servlet في الإقلاع او التمهيد الربيع Spring Boot  Servlet Filter#


تصفية او الفلترة Servlet.  عامل التصفية او الفلترة هو كائن تم استدعاؤه في المعالجة المسبقة للطلب وبعده.  يستخدم بشكل رئيسي لأداء مهام التصفية مثل التحويل ، التسجيل ، الضغط ، التشفير وفك التشفير ، التحقق من صحة المدخلات ، إلخ.

المرشح هو كائن يستخدم لاعتراض طلبات HTTP واستجابات التطبيق الخاص بك.  باستخدام عامل التصفية ، يمكننا إجراء عمليتين في حالتين -

 قبل إرسال الطلب إلى وحدة تحكم
 قبل إرسال استجابة إلى العميل.
 تعرض التعليمة البرمجية التالية نموذج التعليمة البرمجية لفئة تطبيق تصفية Servlet مع تعليق توضيحي علىComponent.

على سبيل المثال عن فلترة البيانات المدخلة من قبل المستخدم مثلا تسجيل جديد فإنه يجب التحقق من ان جميع الحقوق ادخلها المستخدم وأن تكون خاضعة لشروط معينة مثل ان الهاتف يجب أن يحتوي على أرقام على حروف وتوجد نوعان من التحقق او الفلترة اما على جانب المستخدم مثل التي تستخدم جافا سكريبت او على جانب السيرفر والتي يتحقق منها السيرفر عند استلامه البيانات.

استخدام المرشح الفلتر
 تسجيل جميع الطلبات الواردة
 يسجل عناوين IP لأجهزة الكمبيوتر التي تنشأ منها الطلبات
 تحويل
 ضغط البيانات
 التشفير وفك التشفير
 التحقق من صحة المدخلات الخ
 ميزة المرشح
 مرشح قابل للتوصيل.
 لا يحتوي عامل تصفية واحد على مورد آخر.
 صيانة أقل
تصفية API
 
 مثل مرشح servlet لها API الخاصة بها.  تحتوي الحزمة javax.servlet على الواجهات الثلاثة لـ Filter API.

 مرشحات
 مرشح سلسلة
 FilterConfig


@Component
public class SimpleFilter implements Filter {
   @Override
   public void destroy() {}

   @Override
   public void doFilter
      (ServletRequest request, ServletResponse response, FilterChain filterchain) 
      throws IOException, ServletException {}

   @Override
   public void init(FilterConfig filterconfig) throws ServletException {}
}

يوضح المثال التالي رمز قراءة المضيف البعيد والعنوان البعيد من كائن ServletRequest قبل إرسال الطلب إلى وحدة التحكم
 في طريقة doFilter () ، أضفنا عبارات System.out.println لطباعة المضيف البعيد والعنوان البعيد.

package com.ahmedalmahallawi.demo;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.springframework.stereotype.Component;

@Component
public class SimpleFilter implements Filter {
   @Override
   public void destroy() {}

   @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain) 
      throws IOException, ServletException {
      
      System.out.println("Remote Host:"+request.getRemoteHost());
      System.out.println("Remote Address:"+request.getRemoteAddr());
      filterchain.doFilter(request, response);
   }

   @Override
   public void init(FilterConfig filterconfig) throws ServletException {}
}

في ملف فئة التطبيق الرئيسي لـ Spring Boot ، أضفنا نقطة نهاية REST البسيطة التي تُرجع السلسلة "Hello World".

package com.ahmedalmahallawi.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @RequestMapping(value = "/")
   public String hello() {
      return "Hello World";
   }
}

رمز Maven build - pom.xml موضح أدناه -

xml version = "1.0" encoding = "UTF-8"?>
 xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "
   http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   4.0.0
com.tutorialspoint demo 0.0.1-SNAPSHOT jar demo Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.8.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin

رمز Gradle Build - build.gradle مبين أدناه -

buildscript {
   ext {
      springBootVersion = '1.5.8.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter-web')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}

يمكنك إنشاء ملف JAR قابل للتنفيذ ، وتشغيل تطبيق Spring Boot باستخدام أوامر Maven أو Gradle الموضحة أدناه -
 بالنسبة إلى Maven ، استخدم الأمر كما هو موضح أدناه -

mvn clean install

بعد نجاح البناء ، يمكنك العثور على ملف JAR ضمن الدليل الهدف.
 بالنسبة إلى Gradle ، استخدم الأمر كما هو موضح أدناه -
gradle clean build

بعد إنشاء BUILD بنجاح ، يمكنك العثور على ملف JAR ضمن دليل build / libs.
 الآن ، قم بتشغيل ملف JAR باستخدام الأمر التالي
java –jar  

يمكنك أن ترى أن التطبيق قد بدأ على منفذ Tomcat 8080.
 الآن ، اضغط على عنوان URL http: // localhost: 8080 / وانظر الإخراج Hello World.  يجب أن يبدو كما هو موضح أدناه -