![cae53a66afc397b7a46ce33cc7a171e7.png](https://i-blog.csdnimg.cn/blog_migrate/c96403947037181a7a3369117a8d61e6.jpeg)
过滤器是用于拦截应用程序的HTTP请求和响应的对象。通过使用过滤器,可以在两个实例上执行两个操作 -
- 在将请求发送到控制器之前
- 在向客户发送响应之前。
- 以下代码显示了带有@Component注解的Servlet过滤器实现类的示例代码。
@Componentpublic 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.felix.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;@Componentpublic 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主应用程序类文件中,添加了返回“Hello World”字符串的简单REST端点。
package com.felix.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@RestControllerpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @RequestMapping(value = "/") public String hello() { return "Hello World"; }}
Maven构建配置文件:pom.xml 的代码如下 -
<?xml version = "1.0" encoding = "UTF-8"?>4.0.0com.felix demo 0.0.1-SNAPSHOTjardemoDemo project for Spring Bootorg.springframework.boot spring-boot-starter-parent 1.5.8.RELEASEUTF-8UTF-81.8org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-maven-plugin
Gradle构建文件: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.felix'version = '0.0.1-SNAPSHOT'sourceCompatibility = 1.8repositories { mavenCentral()}dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test')}
创建可执行的JAR文件,并使用下面显示的Maven或Gradle命令运行Spring Boot应用程序 -
对于Maven,使用如下所示的命令 -
mvn clean install
在BUILD SUCCESS之后,在target目录下找到JAR文件。
对于Gradle,使用如下所示的命令 -
gradle clean build
在建立成功后,在build/libs 目录下找到JAR文件。
现在,使用以下命令运行JAR文件
java –jar
在Tomcat端口8080上看到应用程序已启动。
现在点击URL => http://localhost:8080/ 并查看输出Hello World。 它应该如下所示 -
![ade9d121e7c0b448307d89d95f664c52.png](https://i-blog.csdnimg.cn/blog_migrate/bef79c3629f26398a8a6438ec6b6b135.jpeg)
然后,在控制台日志中看到远程主机和远程地址,如下所示 -
![13dc8b42e2fab9cd79fb66e8ae9d76eb.png](https://i-blog.csdnimg.cn/blog_migrate/c38c7a32387e23b2d18085d030072bb5.jpeg)