Spring Boot - Bộ lọc Servlet

Bộ lọc là một đối tượng được sử dụng để chặn các yêu cầu và phản hồi HTTP của ứng dụng của bạn. Bằng cách sử dụng bộ lọc, chúng tôi có thể thực hiện hai hoạt động tại hai trường hợp:

  • Trước khi gửi yêu cầu đến bộ điều khiển
  • Trước khi gửi phản hồi cho khách hàng.

Đoạn mã sau hiển thị mã mẫu cho lớp triển khai Bộ lọc Servlet với chú thích @Component.

@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 {}
}

Ví dụ sau cho thấy mã để đọc máy chủ từ xa và địa chỉ từ xa từ đối tượng ServletRequest trước khi gửi yêu cầu đến bộ điều khiển.

Trong phương thức doFilter (), chúng tôi đã thêm các câu lệnh System.out.println để in máy chủ từ xa và địa chỉ từ xa.

package com.tutorialspoint.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 {}
}

Trong tệp lớp ứng dụng chính của Spring Boot, chúng tôi đã thêm điểm cuối REST đơn giản trả về chuỗi “Hello World”.

package com.tutorialspoint.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";
   }
}

Mã cho bản dựng Maven - pom.xml được đưa ra dưới đây -

<?xml version = "1.0" encoding = "UTF-8"?>
<project 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">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>demo</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.8.RELEASE</version>
      <relativePath/> 
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
   
</project>

Mã cho Gradle Build - build.gradle được cung cấp bên dưới:

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')
}

Bạn có thể tạo tệp JAR thực thi và chạy ứng dụng Spring Boot bằng cách sử dụng lệnh Maven hoặc Gradle được hiển thị bên dưới:

Đối với Maven, sử dụng lệnh như hình dưới đây:

mvn clean install

Sau khi XÂY DỰNG THÀNH CÔNG, bạn có thể tìm thấy tệp JAR trong thư mục đích.

Đối với Gradle, sử dụng lệnh như hình dưới đây:

gradle clean build

Sau khi XÂY DỰNG THÀNH CÔNG, bạn có thể tìm thấy tệp JAR trong thư mục build / libs.

Bây giờ, hãy chạy tệp JAR bằng cách sử dụng lệnh sau

java –jar <JARFILE>

Bạn có thể thấy ứng dụng đã khởi động trên cổng Tomcat 8080.

Bây giờ hãy nhấn vào URL http://localhost:8080/và xem đầu ra Hello World. Nó sẽ trông như hình dưới đây -

Sau đó, bạn có thể thấy địa chỉ Máy chủ từ xa và Máy chủ từ xa trên nhật ký bảng điều khiển như hình dưới đây -