Tìm hiểu về Servlet Filter trong Spring Boot
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:
Sau đó bạn sẽ thấy Remote host, Remote address trong cửa sổ console:
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