post-image

Tìm hiểu về Servlet Filter trong Spring Boot

Tổng quan

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

  • Trước khi gửi request tới controller.
  • Trước khi gửi response tới client.

Đoạn mã sau đây hiển thị mã mẫu cho lớp triển khai Servlet Filter 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 {} }
Code language: CSS (css)

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 để print ra remote host and remote address.

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 {} }
Code language: CSS (css)

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"; } }
Code language: JavaScript (javascript)

Maven build – pom.xml:

<?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>
Code language: HTML, XML (xml)

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') }
Code language: JavaScript (javascript)

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:

Maven

mvn clean install

Gradle:

gradle clean build

Sau khi BUILD SUCCESSFUL, bạn có thể thấy file jar trong thư mục build/libs.

Chạy file Jar

java –jar <JARFILE>
Code language: HTML, XML (xml)

Truy cập http://localhost:8080 bạn sẽ thấy kết quả bên dưới:

Tomcat Started on Port 8080 HTTP

Sau đó bạn sẽ thấy Remote host, Remote address trong cửa sổ console:

Remote Host Remote Address on Console Log

Chúc bạn thành công!

KHOÁ HỌC LẬP TRÌNH DÀNH CHO NGƯỜI MỚI

Tham khảo bài viết khác:

https://hocspringboot.net/2021/09/12/tuong-lai-cua-java-development/

Leave a Reply

Your email address will not be published. Required fields are marked *