springboot对静态资源的支持

1、spring boot默认静态路径支持

Spring Boot 默认将 / 所有访问映射到以下目录:**

classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources

也就是说什么也不用配置,通过浏览器可以直接访问这几个目录下的文件。

1.1、首先搞清楚classpath是指的哪个目录

项目中一般创建这几个目录是在resources下创建的如下图:
在这里插入图片描述
为什么接在resources资源目录下创建这个几个目录就是classpathc呢?
这里我们看下项目打包后target下的目录结构:
在这里插入图片描述
因为默认maven打包完后,会直接把resources下的文件都拷贝到classes目录下,与生成的java class目录是同级的。
所以这里才是classpath。如果你直接访问不到静态文件,那么需要看的是你的target目录下包不包含这些文件。
并且只有src/main/java/resources目录下的文件才会被maven打包进去,如果是其它目录文件,还需要在pom中添加<resources> 包含进去才行。
启动项目后直接访问:

http://localhost:18100/bootstrap.css
http://localhost:18100/1.jpg
http://localhost:18100/2.jpg
http://localhost:18100/3.jpg
http://localhost:18100/4.jpg

1.2、给静态资源加上访问前缀

有时间为了区分静态资源和controller路径,可以给直接访问的静态资源加上前缀:

spring:
  mvc:
    # 设置访问资源前缀,public static resources META-INF/resources下的静态资源必须加这个前缀才能访问
    static-path-pattern: /mystatic/**

那么再次访问public static resources META-INF/resources下的静态时,就需要加上mystatic,路径变成如下:

http://localhost:18100/bootstrap.css
http://localhost:18100/mystatic/1.jpg
http://localhost:18100/mystatic/2.jpg
http://localhost:18100/mystatic/3.jpg
http://localhost:18100/mystatic/4.jpg

1.3、自定义资源文件目录

如果不想用默认的几目录:public static resources META-INF/resources 作为静态资源的目录,那么可以自定义静态资源目录:

spring:
  mvc:
    # 设置访问资源前缀,public static resources META-INF/resources下的静态资源必须加这个前缀才能访问
    static-path-pattern: /mystatic/**
  resources:
     # 自定义静态资源资源目录
    static-locations: classpath:/cusres

自定义资源目录后,resources/resources resources/static目录下的静态资源不能再访问,但public META-INF/resources目录下的文件任可以访问。
在这里插入图片描述

2、spring boot支持jsp

2.1、如果我们想spring boot支持jsp视图

如果我们在项目中不想把jsp,css,js等文件放到resources目录下,而与resources目录下再创建一个webapp目录去放jsp文件,目录结构如下:
在这里插入图片描述

2.2、首先要让maven打包时把这个目录包含进去

如果pom中不设置额外的资源路径,直接打包看下效果:target目录下不会包含webapp目录
在这里插入图片描述
添加pom配置如下:

<resource>
   <directory>src/main/webapp</directory>
    <includes>
        <include>**/*.*</include>
    </includes>
    <filtering>false</filtering>
</resource>

重新打包如下:
在这里插入图片描述

2.3、添加对spring mvc的支持

如果我们此时,直接创建一个Controller里面添加login.html,返回一个视图名字,访问

http://localhost:18100/login.html

会报如下错误:

2023-08-02 10:38:57.743  WARN 13192 --- [io-18100-exec-1] o.s.web.servlet.PageNotFound             : No mapping for GET /login.html

页面没找到,因为还没有视图解析器,回想传统的spring mvc配置时,会加一个视图解析器的配置,和HandlerMapping

<!-- 配置视图解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/jsp/"/>
     <property name="suffix" value=".jsp"/>
 </bean>
<!--默认的HandlerMapping和HandlerAdapter配置形式-->
<!-- 解决springMVC响应数据乱码   text/plain就是响应的时候原样返回数据-->
<mvc:annotation-driven>

</mvc:annotation-driven>

添加spring mvc视图注解

@Configuration
@EnableWebMvc
public class MvcConfig {
}

再次访问,此时错误变成:
不能解析这个视图
在这里插入图片描述
看下@EnableWebMvc注解
在这里插入图片描述
如果自定义WebMvcConfigurer,那么这里就可以获取到。

2.3.1、添加视图解析器

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp();
    }
}

再次访问,后台不会报
在这里插入图片描述
而是提示找不到这个页面:
在这里插入图片描述
registry.jsp();这个方法会默认加上/WEB-INF/前缀和.jsp后缀,创建 InternalResourceViewResolver resolver = new InternalResourceViewResolver();
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/55610.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring之BeanDefinition(二)

Spring之BeanDefinition 文章目录 Spring之BeanDefinition1、对象和bean的区别2、BeanDefinition作用AutowireCandidate说明Primary说明ConstructorArgumentValues说明第一种使用方式第二种使用方式 MutablePropertyValuesabstract小结 3、BeanDefinition的发展历程3、BeanDefi…

C++ 类的友元

【例1】 将数据与处理数据的函数封装在一起&#xff0c;构成类&#xff0c;既实现了数据的共享又实现了隐藏&#xff0c;无疑是面向对象程序设计的一大优点。但是封装并不总是绝对的。现在考虑一个简单的例子&#xff0c;就是Point类&#xff0c;每一个Point类的对象代表一个“…

阿里云服务器免费试用及搭建WordPress网站

文章目录 前言一、免费试用1、选择使用产品2、进行产品配置3、远程连接阿里云服务器①、重置实例密码②、SecureCRT 远程链接③、Workbench 远程链接二、搭建 WordPress 网站1、开放搭建 WordPress 需要的端口2、搭建 LAMP 环境①、Linux 系统升级和更新源②、安装 Apache2③、…

LAXCUS分布式操作系统引领科技潮流,进入百度首页

信息源自某家网络平台&#xff0c;以下原样摘抄贴出。 随着科技的飞速发展&#xff0c;分布式操作系统做为通用基础平台&#xff0c;为大数据、高性能计算、人工智能提供了强大的数据和算力支持&#xff0c;已经成为了当今计算机领域的研究热点。近日&#xff0c;一款名为LAXCU…

云原生势不可挡,如何跳离云原生深水区?

云原生是云计算领域一大热词&#xff0c;伴随云原生概念而来的是数字产业迎来井喷、数字变革来临、数字化得以破局以及新一波的技术红利等等。云原生即“云”原生&#xff0c;顾名思义是让“应用”最大程度地利用云的能力&#xff0c;发挥云价值的最佳路径。具体来说&#xff0…

通向架构师的道路之apache性能调优

一、总结前一天的学习 在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中&#xff0c;还讲述了Http服务 器、App Server的最基本安全配置&#xff08;…

解决单节点es索引yellow

现象 单节点的es&#xff0c;自动创建索引后&#xff0c;默认副本个数为1&#xff0c;索引状态为yellow 临时解决 修改副本个数为0 永久解决 方法1、修改elasticsearch.yml文件&#xff0c;添加配置并重启es number_of_replicas&#xff1a;副本分片数&#xff0c;默认…

【疑难解决】EasyCVR告警消息生成后,合成录像不显示的原因排查

有用户反馈&#xff0c;视频监控汇聚平台EasyCVR对接了摄像头告警信息&#xff0c;但是平台没有告警信息上来。 技术人员配合项目现场排查&#xff0c;TSINGSEE青犀视频安防监控平台EasyCVR平台端已经配置了告警预案&#xff0c;并且也开启了告警开关&#xff0c;用户的配置流程…

docker简单web管理docker.io/uifd/ui-for-docker

要先pull这个镜像docker.io/uifd/ui-for-docker 这个软件默认只能使用9000端口&#xff0c;别的不行&#xff0c;因为作者在镜像制作时已加入这一层 刚下下来镜像可以通过docker history docker.io/uifd/ui-for-docker 查看到这个端口已被 设置 如果在没有设置br0网关时&…

【NLP概念源和流】 05-引进LSTM网络(第 5/20 部分)

一、说明 在上一篇博客中,我们讨论了原版RNN架构,也讨论了它的局限性。梯度消失是一个非常重要的缺点,它限制了RNN对较短序列的建模。香草 RNN 在相关输入事件和目标信号之间存在超过 5-10 个离散时间步长的时间滞时无法学习。这基本上限制了香草RNN在许多实际问题上的应用,…

编程:必备技能还是浪费时间?

当下&#xff0c;学习编程正变得越来越受欢迎&#xff0c;许多人都在探讨这个话题&#xff0c;但仍有很多人产生疑问&#xff1a;学习编程是否有必要&#xff1f;我们可以从学习编程的好处和应用领域来进行分析。好处方面&#xff0c;乔布斯曾说&#xff1a;“人人都应该学习编…

新闻稿发布中,首发来源和转载是什么意思?

一秒推小编告诉您&#xff0c;在新闻稿发布中&#xff0c;首发来源和转载是两个常用的词语&#xff0c;它们有着不同的含义和使用场合。#新闻稿发布# 首发来源指的是原创的、第一次发布该条新闻的媒体或媒体机构。比如&#xff0c;如果一家新闻机构发布了一则新闻稿&#xff0c…

《golang设计模式》第一部分·创建型模式-03-建造者模式(Builder)

文章目录 1. 概念1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 角色 Builder&#xff08;抽象建造者&#xff09;&#xff1a;给出一个抽象接口&#xff0c;以规范产品对象的各个组成成分的建造。ConcreteBuilder&#xff08;具体建造者&#xff09;&a…

05 Ubuntu下安装.deb安装包方式安装vscode,snap安装Jetbrains产品等常用软件

使用deb包安装类型 deb包指的其实就是debian系统&#xff0c;ubuntu系统是基于debian系统的发行版。 一般我们会到需要的软件官网下载deb安装包&#xff0c;然后你既可以采用使用“软件安装”打开的方法来进行安装&#xff0c;也可以使用命令行进行安装。我推荐后者&#xff…

装修小程序,开启装修公司智能化服务的新时代

随着数字化时代的来临&#xff0c;装修小程序成为提升服务质量和效率的关键工具。装修小程序旨在为装修公司提供数字化赋能、提高客户满意度的智慧装修平台。通过装修小程序&#xff0c;装修公司能够与客户进行在线沟通、展示设计方案、提高服务满意度等操作。 装修小程序的好处…

spring boot 服务健康检测返回OUT_OF_SERVICE,导致服务无法成功注册到consul

一、背景 健康检测接口返回OUT_OF_SERVICE curl -X GET http://192.168.5.53:8085/mgm/health{"status":"OUT_OF_SERVICE"}从日志启动看&#xff0c;没有任何报错信息&#xff1b;而且jvm进程也启动成功。 关键的一点信息是&#xff0c;服务的swagger地…

Linux之 Ubuntu 安装常见服务 (二) Tomcat

安装TomCat 服务 1、安装JDK环境 https://www.oracle.com/java/technologies/downloads/ 下载的官网 wget https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.deb (sha256) 使用dpkg进行软件安装时&#xff0c;提示&#xff1a;dpkg&#xff1a;处理软件包XX…

若依打印sql

官方issue 自动生成的代码&#xff0c;sql日志怎么没有打印 在ruoyi-admin中的application.yml配置如下。 # 日志配置&#xff0c;默认 logging:level:com.ruoyi: debugorg.springframework: warn#添加配置com.ying: debug输出sql

express学习笔记6 - 用户模块

新建router/user.js const express require(express) const routerexpress.Router() router.get(/login, function(req, res, next) {console.log(/user/login, req.body)res.json({code: 0,msg: 登录成功})})module.exportsrouter 在router/user.js引入并使用 const us…

DevOps系列文章之 Docker 安装 NFS 服务器

Docker 安装 NFS 服务器 环境&#xff1a; 192.186.2.105 NFS 服务器 192.168.2.106 Client 客户端 安装 一、服务器端 https://github.com/f-u-z-z-l-e/docker-nfs-server 1、创建目录 mkdir /nfsdata mkdir -p /docker/nfs/2、启动脚本 vim start.sh# 内容 docker run …