Spring Boot 教程:Servlet 过滤器

        过滤器是一种拦截应用中 HTTP 请求和响应的对象,使用过滤器,你可以执行以下两种情形下的两种操作:
  • 在发送请求到到控制器之前
  • 在发送响应到客户端之前
       下面的示例代码是以 @Component 注解的类来实现 Servlet 过滤器:
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 语句打印远程主机和地址:
 1 package com.tutorialspoint.demo;
 2  
 3 import java.io.IOException;
 4 import javax.servlet.Filter;
 5 import javax.servlet.FilterChain;
 6 import javax.servlet.FilterConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10  
11 import org.springframework.stereotype.Component;
12  
13 @Component
14 public class SimpleFilter implements Filter {
15    @Override
16    public void destroy() {}
17  
18    @Override
19    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain) 
20       throws IOException, ServletException {
21       
22       System.out.println("Remote Host:"+request.getRemoteHost());
23       System.out.println("Remote Address:"+request.getRemoteAddr());
24       filterchain.doFilter(request, response);
25    }
26  
27    @Override
28    public void init(FilterConfig filterconfig) throws ServletException {}
29 }

 

       在 Spring Boot 主应用类文件中,我们加了简单 REST 端点返回 “Hello World” 字串:
 1 package com.tutorialspoint.demo;
 2  
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.RestController;
 7  
 8 @SpringBootApplication
 9 @RestController
10 public class DemoApplication {
11    public static void main(String[] args) {
12       SpringApplication.run(DemoApplication.class, args);
13    }
14    @RequestMapping(value = "/")
15    public String hello() {
16       return "Hello World";
17    }
18 }

 

       Maven build – pom.xml 代码如下:
 1 <?xml version = "1.0" encoding = "UTF-8"?>
 2 <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "
 3    http://www.w3.org/2001/XMLSchema-instance"
 4    xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
 5    http://maven.apache.org/xsd/maven-4.0.0.xsd">
 6    
 7    <modelVersion>4.0.0</modelVersion>
 8    <groupId>com.tutorialspoint</groupId>
 9    <artifactId>demo</artifactId>
10    <version>0.0.1-SNAPSHOT</version>
11    <packaging>jar</packaging>
12    <name>demo</name>
13    <description>Demo project for Spring Boot</description>
14  
15    <parent>
16       <groupId>org.springframework.boot</groupId>
17       <artifactId>spring-boot-starter-parent</artifactId>
18       <version>1.5.8.RELEASE</version>
19       <relativePath/> 
20    </parent>
21  
22    <properties>
23       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
24       <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
25       <java.version>1.8</java.version>
26    </properties>
27  
28    <dependencies>
29       <dependency>
30          <groupId>org.springframework.boot</groupId>
31          <artifactId>spring-boot-starter-web</artifactId>
32       </dependency>
33  
34       <dependency>
35          <groupId>org.springframework.boot</groupId>
36          <artifactId>spring-boot-starter-test</artifactId>
37          <scope>test</scope>
38       </dependency>
39    </dependencies>
40  
41    <build>
42       <plugins>
43          <plugin>
44             <groupId>org.springframework.boot</groupId>
45             <artifactId>spring-boot-maven-plugin</artifactId>
46          </plugin>
47       </plugins>
48    </build>
49 </project>

       Gradle Build – build.gradle 代码如下:

 1 buildscript {
 2    ext {
 3       springBootVersion = '1.5.8.RELEASE'
 4    }
 5    repositories {
 6       mavenCentral()
 7    }
 8    dependencies {
 9       classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
10    }
11 }
12  
13 apply plugin: 'java'
14 apply plugin: 'eclipse'
15 apply plugin: 'org.springframework.boot'
16  
17 group = 'com.tutorialspoint'
18 version = '0.0.1-SNAPSHOT'
19 sourceCompatibility = 1.8
20  
21 repositories {
22    mavenCentral()
23 }
24 dependencies {
25    compile('org.springframework.boot:spring-boot-starter-web')
26    testCompile('org.springframework.boot:spring-boot-starter-test')
27 }
       你可以使用以下 Maven 或 Gradle 命令来创建可执行 JAR 文件,运行 Spring Boot 应用:
       Maven 命令如下:
mvn clean install
       在 BUILD SUCCESS 之后,你可以在 target 目录下找到 JAR 文件。
      Gradle 命令如下:
gradle clean build
       在 BUILD SUCCESSFUL 之后,你可以在 build/libs 目录下找到 JAR 文件。
       现在,使用下面的命令运行 JAR 文件:
java –jar <JARFILE> 
       你可以看到应用已经在 Tomcat 端口号 8080 启动了。
       现在单击 URL http://localhost:8080/ 可以看到输出了 Hello World。看起来应当是下面的样子:
       然后你可以看到如下所示的控制台日志:
 
 
posted @ 2020-08-31 18:58  码者无疆  阅读(271)  评论(0)    收藏  举报