windows springboot jar运行后 一段时间后请求没响应_Springboot (十五) Springboot Servlet过滤器...

cae53a66afc397b7a46ce33cc7a171e7.png

过滤器是用于拦截应用程序的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

然后,在控制台日志中看到远程主机和远程地址,如下所示 -

13dc8b42e2fab9cd79fb66e8ae9d76eb.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你使用Spring Boot打包项目生成一个包含-SNAPSHOT版本号的JAR(例如 `-SNAPSHOT.jar`)时,通常情况下这个JAR文件会自动包含一个Maven或Gradle的主清单(`Manifest.MF`),该清单包含了应用程序的基本元数据,如主类(Main-Class)等。然而,如果你发现打包后的JAR有主清单,可能是因为以下原因: 1. **配置问题**:在构建配置(Maven的pom.xml或Gradle的build.gradle)中,有明确指定主类或者有正确配置打包行为。检查是否有`<mainClass>`标签在Maven的`<jar>`元素中,或者Gradle的`jar`任务。 2. **插件问题**:某些插件可能有正确处理打包过程,尤其是对于自定义构建流程的配置,比如使用Spring Boot的插件或第三方构建工具时。 3. **排除清单**:如果你手动排除了主清单文件,或者配置了不包含主清单的打包选项,这可能导致主清单缺失。 4. **IDE构建**:某些IDE(如IntelliJ IDEA)可能会根据项目的设置自动处理打包,如果有正确配置,也可能会导致缺少主清单。 解决这个问题,你可以按照以下步骤检查: - **检查构建脚本**:确保主类被正确配置,并且有排除主清单文件。 - **更新插件和配置**:确保使用的构建工具(如Maven或Gradle)和Spring Boot插件是最新的,并且配置正确。 - **重新构建**:尝试清理并重新构建项目,有时IDE缓存的问题可能会导致意外的结果。 - **查看日志**:查找编译或打包过程中可能的错误信息。 相关问题: 1. 如何在Spring Boot的Maven/Gradle配置中添加主清单? 2. 如果主清单不存在,IDE如何手动配置添加主类信息? 3. 如何在打包命令行中确认是否正确指定了主类?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值