当前位置:首页>开发>正文

如何正确读取war包中配置文件的路径 Spring Boot之如何配置静态资源的地址与访

2023-05-20 17:43:45 互联网 未知 开发

 如何正确读取war包中配置文件的路径 Spring Boot之如何配置静态资源的地址与访

如何正确读取war包中配置文件的路径


我的war包路径/war/WEB-INF/test/foo.txt

所以你可以用以下两句话来获取到war包里的文件:
ServletContext context = getContext()
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt")

Spring Boot之如何配置静态资源的地址与访

静态资源,例如HTML文件、JS文件,设计到的Spring Boot配置有两项,一是“spring.mvc.static-path-pattern”,一是“spring.resources.static-locations”,很多人都难以分辨它们之间的差异,所以经常出现的结果就是404错误,无法找到静态资源。
1. “spring.mvc.static-path-pattern”
spring.mvc.static-path-pattern代表的含义是我们应该以什么样的路径来访问静态资源,换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求,以官方配置为例:
# 这表示只有静态资源的访问路径为/resources/**时,才会处理请求
spring.mvc.static-path-pattern=/resources/**,
假定采用默认的配置端口,那么只有请求地址类似于“http://localhost:8080/resources/jquery.js”时,Spring Boot才会处理此请求,处理方式是将根据模式匹配后的文件名查找本地文件,那么应该在什么地方查找本地文件呢?这就是“spring.resources.static-locations”的作用了。
2. “spring.resources.static-locations”
“spring.resources.static-locations”用于告诉Spring Boot应该在何处查找静态资源文件,这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行,默认的官方配置如下:
spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources
继续以上面的请求地址为例,“http://localhost:8080/resources/jquery.js”就会在上述的四个路径中依次查找是否存在“jquery.js”文件,如果找到了,则返回此文件,否则返回404错误。
3. 静态资源的Bean配置
从上面可以看出,“spring.mvc.static-path-pattern”与“spring.resources.static-locations”组合起来演绎了nginx的映射配置,如果熟悉Spring MVC,那么理解起来更加简单,它们的作用可以用Bean配置表示,如下:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/public-resources/")
.setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic())
}
}
或者等同与以下的XML。



结论
“spring.mvc.static-path-pattern”用于阐述HTTP请求地址,而“spring.resources.static-locations”则用于描述静态资源的存放位置。

如何配置springboot的jsp支持

这个跟spring mvc一样的啊,首先你看你的spring-mvc.xml 有没有配置defaultViewResolver,



然后你在action的方法中如果1.标注了@ResponseBody,返回字符串的话是通过write输出到页面。2.没有标注这个,spring mvc会到配置的目录下 找相应的jsp。比如返回 "hello",它就在 webpage/目录下找hello.jsp。 返回 "user/login",它就会找 webpage/user/login.jsp

怎么让spring mvc 导出war包

打包式改war
没啥说 肯定要改war
配置嵌入Tomcat式
两种式选择:
式:用spring-boot内置tomcat库 并指定要部署Tomcat版本

7.0.6
org.apache.tomcat
tomcat-juli
${tomcat.version}

式二:用spring-boot内置tomcat库(强烈推荐种式)

org.springframework.boot
spring-boot-starter-tomcat
provided

maven-war-plugin (选)
与maven-resources-plugin类似些自定义打包操作 比非标准目录文件要打war包或者配置文件引用pom变量 具体用参见官文档:
-

springboot怎么获取工程资源路径

最近搞了一个springboot的项目,但是在项目部署的时候遇到一个问题:就是我将项目导出为war包,然后用java -jar 运行时,项目中文件上传的功能无法正常运行,其中获取到存放文件的目录的绝对路径的值为空,文件无法上传,试了很多方法 貌似是因.

最新文章