解析Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题
问题:
- 使用getServletContext().getRealPath()得到的是临时文件的路径。
- 每次重启服务,这个临时文件的路径还会变更。
- 类似下面这种路径:
解决措施:在idea的启动配置里面配置工作区。
- 在工作区下建立public文件夹。
- 问题解决。
原理解释:源码位置:org\springframework\boot\web\servlet\server\DocumentRoot.java
SpringBoot启动后,默认会把commonDocRoot设置成这三个目录(java项目 www.fhadmin.org)。
- 如果没有就会设置成临时位置。
- 注意:这些目录都是在工作区下找的,如果没有设置工作区,肯定也是找不到的。
- 配置好工作区,添加了public文件夹后,就能正常获取路径了。
- 文件存储成功。
以上就是Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题的详细内容,更多关于Spring Boot内嵌tomcat的资料请关注我们其它相关文章!
相关推荐
-
Spring boot 默认静态资源路径与手动配置访问路径的方法
在application.propertis中配置 ##端口号 server.port=8081 ##默认前缀 spring.mvc.view.prefix=/ ## 响应页面默认后缀 spring.mvc.view.suffix=.html # 默认值为 /** spring.mvc.static-path-pattern=/** # 这里设置要指向的路径,多个使用英文逗号隔开,默认值为 classpath:/META-INF/resources/,classpath:/resources/,
-
springboot如何获取相对路径文件夹下静态资源的方法
今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classPath下面,而是一个相对路径. 一开始使用修改配置文件的方式: # 配置静态资源访问前缀 spring.mvc.static-path-pattern=*/** # 配置静态资源路径,默认配置失效 spring.resources.static-locations=../upload 发现并不行,无法解析出相对路径. 后面通过自定义静态资源映射配置类实现了: @Config
-
spring boot加载资源路径配置和classpath问题解决
1.spring boot默认加载文件的路径: /META-INF/resources/ /resources/ /static/ /public/ 我们也可以从spring boot源码也可以看到: private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classp
-
spring boot2.0图片上传至本地或服务器并配置虚拟路径的方法
最近写了关于图片上传至本地文件夹或服务器,上传路径到数据库,并在上传时预览图片.使用到的工具如下: 框架:spring boot 2.0 前端模板:thymeleaf 图片预览:js 首先,上传以及预览,js以及<input type="file">,以及预览图片的JS function Img(obj){ var imgFile = obj.files[0]; console.log(imgFile); var img = new Image(); var fr = ne
-
Springboot通过图片路径形式获取图片
一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127.0.0.1:8888/getPhoto/1.jpg 这样获取图片数据,竟然有点懵逼了. 直接贴代码: @RequestMapping(value = "/getPhoto/{imgUrl:[a-zA-Z0-9_.]+}", produces = MediaType.IMAGE_JPEG_VALUE) @ResponseBody pub
-
Springboot内置tomcat配置虚拟路径过程解析
在Springboot中默认的静态资源路径有:classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,从这里可以看出这里的静态资源路径都是在classpath中(也就是在项目路径下指定的这几个文件夹) 试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果? 网站数据与程序代码不能有效分离: 当项目被打包成一个.jar文件部署时
-
解析Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题
问题: 使用getServletContext().getRealPath()得到的是临时文件的路径. 每次重启服务,这个临时文件的路径还会变更. 类似下面这种路径: 解决措施:在idea的启动配置里面配置工作区. 在工作区下建立public文件夹. 问题解决. 原理解释:源码位置:org\springframework\boot\web\servlet\server\DocumentRoot.javaSpringBoot启动后,默认会把commonDocRoot设置成这三个目录(java项目
-
Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ
-
Spring Boot之内嵌tomcat版本升级操作示例
目录 Spring Boot之如何升级内嵌tomcat版本 1. 背景 修复方案如下: 2. 过程 2.1 升级单模块项目的tomcat版本 2.2 升级包含多个模块的项目 3. 项目有打包子模块如何升级 尾声 Spring Boot之如何升级内嵌tomcat版本 1. 背景 根据信息安全运营团队发布的Tomcat-AJP协议漏洞风险预警,Tomcat的AJP协议存在高危漏洞(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp 下的任意
-
使用 Spring Boot 内嵌容器 Undertow创建服务器的方法
Undertow是一个Web服务器,那么它就需要具备的现代Web服务器的基本特性,比如Servlet,JSP,文件服务器,代理服务器,安全认证等.undertow目前已经实现了绝大多数功能,并且因为wildfly通过了JavaEE7 TCK认证,所以可以说Undertow是一个通过Servlet 3.1认证的Web服务器和容器.这篇文章只分析Undertow的主干流程上的主要功能,即undertow-core和undertow-servlet. 1.简介 Undertow是一个非常轻量并高性能的
-
Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解
标题和Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用LifecycleBase对这一套容器(engine,host,context及wrapper)进行启动并发布诸如configure_start.before_init.after_start的lifecycleEvent事件给相应的监听器(如
-
把spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式: 2. 其次spring boot的web项目中内嵌tomca
-
Spring Boot如何移除内嵌Tomcat,使用非web方式启动
前言:当我们使用Spring Boot编写了一个批处理应用程序,该程序只是用于后台跑批数据,此时不需要内嵌的tomcat,简化启动方式使用非web方式启动项目,步骤如下: 1.修改pom.xml文件 在pom.xml文件中去除内嵌tomcat,添加servlet依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</
-
浅谈SpringBoot内嵌Tomcat的实现原理解析
一.序言 使用SpringBoot经常会使用内嵌的tomcat做为项目的启动容器,本文将从源码的角度出发,剖析SpringBoot内嵌Tomcat的实现原理,讨论Tomcat何时创建.何时启动以及怎么启动. 二.引入Tomcat组件 导入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&
-
Spring Boot部署到Tomcat过程中遇到的问题汇总
前言 Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中,一般也是直接启动Application类,但是有些时候我们需要部署到外部的服务器,这对于Spring Boot来说却有点麻烦 下面就记录下自己部署的第一个SpringBoot项目到Tomcat中遇到的问题,三个地方需要注意:头疼-- 详细如下: 1.SpringBoot有自己内置Tomcat容器,所以要告诉它不使用内置容器,不指定Tomcat版本配置如下:
-
Springboot内嵌tomcat应用原理深入分析
目录 默认Servlet容器 切换Servlet容器 内嵌tomcat自动配置原理 tomcat自动配置类 tomcat工厂类 何时被调用 onRefresh() finishRefresh() springboot版本:2.2.9.RELEASE. 默认Servlet容器 springboot默认支持tomcat.jetty.undertow作为底层容器, 一旦引入spring-boot-starter-web模块,就默认使用tomcat. <dependency> <groupId&
随机推荐
- Swift免费短信验证码实现及动态倒计时功能
- 深入探讨Vue.js组件和组件通信
- 解决Ubuntu 16.04下提示boot分区空间不足的办法
- iOS 和 Android 哪个更利于赚钱?
- 自己写了一个php检测文件编码的函数
- Python 结巴分词实现关键词抽取分析
- ASP.NET Core MVC压缩样式、脚本详解
- ThinkPHP分页类使用详解
- zf框架的校验器使用使用示例(自定义校验器和校验器链)
- THINKPHP项目开发中的日志记录实例分析
- PHP的类 功能齐全的发送邮件类
- php使用PDO事务配合表格读取大量数据插入操作实现方法
- python字符串str和字节数组相互转化方法
- JS文件上传神器bootstrap fileinput详解
- jQuery中first()方法用法实例
- Linux系统下安装rz/sz命令及使用说明(详解)
- 深入解析android5.1 healthd
- spring boot系列之集成测试(推荐)
- javascript实现日历效果
- Python爬虫文件下载图文教程