精华内容
下载资源
问答
  • 解决SpringBoot无法访问静态资源文件
    千次阅读
    2021-07-20 19:01:00

    前言

    在利用SpringBoot项目开发系统的过程中,遇到了SpringBoot项目无法访问静态资源文件的问题,被折磨了不知道多长时间以后,最终将问题解决并在此留下记录,如果以后遇到这样的问题忘了如何解决再回来查看。


    问题描述

    在开发的过程中,HTML页面中<script>标签的路径是正确的,但是就是无法访问静态资源文件。
    在这里插入图片描述
    在这里插入图片描述


    原因分析

    后来了解到是因为没有在yml文件中配置相应的静态资源的访问路径,所以才无法访问静态资源,在该项目中作者使用的是yml文件,当时有问题的yml文件如下
    在这里插入图片描述
    是因为没有配置相应的静态资源访问路径,后面加上静态资源访问路径后问题得到解决
    在这里插入图片描述


    解决方案

    修改yml文件,添加如下配置:

    spring:
      mvc:
        static-path-pattern: /static/**
    

    修改properties文件添加如下配置:

    spring.mvc.static-path-pattern=/static/**
    
    更多相关内容
  • 本篇文章主要介绍了SpringMVC访问静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • SpringMVC访问静态资源

    2018-06-03 16:23:44
    SpringMVC访问静态资源SpringMVC访问静态资源SpringMVC访问静态资源
  • SpringBoot访问静态资源

    千次阅读 2022-04-03 18:21:33
    SpringBoot中存访问静态资源

    SpringBoot-----SpringBoot访问静态资源

    在这里插入图片描述

    🔥一、静态资源相关目录

    SpringBoot项目中没有WebApp目录,只有src目录。在src/main/resources下面有static和templates两个文件夹。SpringBoot默认在static目录中存放静态资源,而templates中放动态页面。

    1、static目录

    SpringBoot通过/resources/static目录访问静态资源,在resources/static中编写html页面:
    在这里插入图片描述

    2、templates目录

    在SpringBoot中不推荐使用JSP作为动态页面,而是默认使用Thymeleaf编写动态页面。templates目录是存放Thymeleaf页面的目录,稍后我们讲解Thymeleaf技术。
    在这里插入图片描述

    🔥二、静态资源其他存放位置

    除了/resouces/static目录 , SpringBoot还会扫描以下位置的静态资源:

    1 、/resources/META-INF/resources/

    2、/resources/resources/

    3、resources/public/
    在这里插入图片描述

    在SpringBoot配置文件进行自定义静态资源位置配置:
    spring:
    web:
    resources:
    static-locations: classpath:/yingxiong/,classpath:/static/

    注意:
    该配置会默认覆盖静态资源位置 , 如果还想使用之前的静态资源位置 , 还需要配置在后面
    SpringBoot2.5之前的配置方式为 spring.resources.static-locations

    在这里插入图片描述

    ✨脚踏实地,一步一步,总能成功✨

    展开全文
  • SpringBoot 直接访问静态资源

    千次阅读 2020-09-12 18:16:13
    这里记录一下静态资源访问方式和引入shiro后的修改。 SpringBoot 默认静态资源访问配置 SpringBoot 默认配置就可以直接URL访问下面路径下的静态资源 classpath:/META-INF/resources/ classpath:/resources/ ...

    一般现在都前后端分离方式,SpringBoot主要提供接口服务,但有时候有一些小项目就希望一个jar前后端都搞定,因此一些页面等静态资源都放入SpringBoot中。 这里记录一下静态资源访问方式和引入shiro后的修改。

    SpringBoot 默认静态资源访问配置

    SpringBoot 默认配置就可以直接URL访问下面路径下的静态资源

    1. classpath:/META-INF/resources/
    2. classpath:/resources/
    3. classpath:/static/
    4. classpath:/public/

    顺序优先级按照上面的顺序
    在这里插入图片描述
    假设端口设为8080,URL访问 http://localhost:8080/index.html 请注意URL路径中不用加static/

    测试结果发现,优先访问的 META-INF->resources 下的index.html

    SpringBoot 默认配置的静态资源路径的值由变量spring.resources.static-locations控制,一般我们也不用去修改它

    
    spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/
    static/,classpath:/public/ # Locations of static resources.
    
    

    引入shiro 或 security后的拦截过滤

    假设一开始 shiro或security对SpringBoot的所有访问路径(/**)都做了拦截,
    这种情况下,我希望将我的页面、js、css、图片等静态资源放入static下,让shiro或security不拦截这些资源,如何配置?

    假设你的静态资源目录如下:
    在这里插入图片描述

    一开始以为这样:

    
    filterRuleMap.put("/static/**", "anon");
    
    

    即放开static路径下的所有静态资源,但发现访问 404.

    其实 src/main/resources/static 是存放静态资源的目录而不是url的访问目录,你应该是对static目录下资源进行配置过滤规则。

    你可以这样配置,下面的是shiro的静态资源过滤配置,security的一样,主要是哪些url路径需要过滤。

    // 图片js文件等过滤配置
    filterRuleMap.put("/css/**", "anon");
    filterRuleMap.put("/js/**", "anon");
    filterRuleMap.put("/img/**", "anon");
    filterRuleMap.put("/pages/**", "anon");
    // 首页过滤配置
    filterRuleMap.put("/index.html", "anon");
    filterRuleMap.put("/", "anon");
    

    这样就可以访问 静态资源了,访问index.html了。

    如果你发现要配置很多可以将原来所有文件放入一个统一目录myfiles下,对这个目录进行过滤即可,如下图所示:
    在这里插入图片描述

    filterRuleMap.put("/myfiles/**", "anon");
    // 首页过滤配置
    filterRuleMap.put("/index.html", "anon");
    filterRuleMap.put("/", "anon");
    

    但这样访问首页时,URL路径里面就需要增加这个myfiles, localhost:8080/myfiles/index.html

    一个笨的解决方法是可以增加一个额外的index.html页面,直接跳转/myfiles/index.html页面即可。

    <script>
        window.location.href = 'pages/index.html';
    </script>
    

    在这里插入图片描述

    展开全文
  • 今天小编就为大家分享一篇关于SpringBoot静态资源目录访问,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • springboot访问静态资源两种情况

    千次阅读 2020-03-07 10:46:05
    1.springboot自身访问静态资源 2.springboot结合第三方模版引擎访问静态资源 先贴上一个项目 springboot自身访问静态资源 1.在springboot项目中,访问静态资源是怎么配置的?哪里体现? springboot默认访问静态资源路径...

    1.springboot自身访问静态资源
    2.springboot结合第三方模版引擎访问静态资源

    先贴上一个项目

    springboot自身访问静态资源

    1.在springboot项目中,访问静态资源是怎么配置的?哪里体现?
    springboot默认访问静态资源路径是
    (1)classpath:/META-INF/resources/
    (2)classpath:/resources/
    (3)classpath:/static/
    (4)classpath:/public/
    注意:上面这四个默认的静态资源路径,是 springboot认可的,静态资源如果不放在这四个默认的路径中,springboot是找不到的,当然也可以更改静态资源路径
    从依赖spring-boot-autoconfigure入手,因为springboot很多自己默认的配置都可以从这个依赖入手找
    首先找自动配置类WebMvcAutoConfiguration,然后搜索location,跟着就会找到ResourceProperties,就会看到上面的路径

    要明白两个要点
    一、视图
    视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
    为了实现视图模型和具体实现技术的解耦,Spring 在org.springframework.web.servlet 包中定义了一个高度抽象的View接口:
    在这里插入图片描述
    视图对象由视图解析器负责实例化。由于视图是无状态的,所以他们不会有线程安全的问题
    在这里插入图片描述
    二、视图解析器
    SpringMVC 为逻辑视图名的解析提供了不同的策略,可以在Spring WEB 上下文中配置一种或多种解析策略,并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。

    视图解析器的作用比较单一:将逻辑视图解析为一个具体的视图对象。

    所有的视图解析器都必须实现ViewResolver 接口:
    在这里插入图片描述
    常用的视图解析器实现类

    在这里插入图片描述
    每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高;

    SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出ServletException 异常。
    看看使用的视图解析器
    在这里插入图片描述
    从springboot启动说起
    springboot启动时,会到类路径下的spring-boot-autoconfigure.jar包中找spring.factories加载众多配置类中的WebMvcAutoConfiguration配置类
    在这里插入图片描述
    在这配置类中,创建默认的视图解析器InternalResourceViewResolver对象放到springIOC容器中.InternalResourceViewResolver类的父类中维护了一个属性viewClass,在创建InternalResourceViewResolver对象的时候,根据源码知道,就设置了viewClass=InternalResourceView,说明默认的视图是InternalResourceView,同时debug时看看这些对象的属性有什么东西

    补充:了解到springMVC中重要的是视图和视图解析器,那么怎么了解这两个类?
    首先一定要想到看这两个东西是接口还是类,然后可以对其中的相关的方法打断点debug,看看它们对象是怎么创建,创建后调用什么方法.
    这是一种思想,学习任何一个技术,了解原理后,从接口开始,看类在哪个地方创建或者调用接口哪个方法

    springboot结合第三方模版引擎访问静态资源
    在这里插入图片描述
    Thymeleaf 常用的表达式、标签和函数
    1.常用表达式

    • ${...}变量表达式。
    •* { .. . } 选择表达式。
    • #{...}消息文字表达式。
    • @ {} 链接url 表达式。
    • #maps 工具对象表达式。
    
    

    2.常用标签

    • th:action 定义后台控制器路径。
    • th:each 1,盾环语-句。
    • th:field 表单字段绑定。
    • th:href 定义超链接。
    • th:id div 标签中的ID 声明,类似HTML 标签中的归属性。
    • th:if 条件判断语句。
    • th:include 布局标签,替换内容到引入文件。
    • th :企agment 布局标签,定义一个代码片段,方便其他地方引用。
    • th:object 替换对象。
    • th:src 图片类地址引入。
    • th:text 显示文本。
    • th:value 属性赋值。
    
    

    3.常用函数

    • #dates 日期函数。
    • #lists 列表函数。
    • #arrays 数组函数。
    • #strings 字符串函数。
    • #numbers 幸生字函捷生。
    • #ca lendars 日历函数。
    • #objects 对象函数。
    • #bools 逻辑函数。
    
    

    创建一个maven项目测试
    在这里插入图片描述
    POM文件

    spring:
      #springboot自身访问静态资源
      mvc:
        #spring.mvc.static-path-pattern代表的含义是我们应该以什么样的路径来访问静态资源,
        #换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求
        #例子:如果spring.mvc.static-path-pattern=/static/**,那么浏览器就要输入http://localhost:8080/static/index.html
        #所以访问静态资源,一定要URL中加( /static/ )来访问
        static-path-pattern: /**
        view:
          prefix:
          suffix: .html
      #spring.resources.static-locations用于告诉Spring Boot应该在何处查找静态资源文件,
      #这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行
      #比如说,访问http://localhost:8080/static/index.html,index.html页面并没有真正的在static目录下,但是
      #springboot会到( classpath:/resources/ ) 找到index.html
      resources:
        static-locations: classpath:/resources/,classpath:/static/,classpath:/template
    
      #一下使用thymeleaf模版引擎
      thymeleaf:
        #模板的模式,支持 HTML, XML TEXT JAVASCRIPT
        mode: HTML5
        #编码 可不用配置
        encoding: UTF-8
        #开发配置为false,避免修改模板还要重启服务器
        cache: false
        #配置模板路径,默认是templates,可以不用配置
        #这里前缀一定要配置好,要不然找不到页面( /templates/ ),而不能是( /templates )
        prefix: classpath:/templates/
        suffix: .html
        #内容类别,可不用配置
        servlet:
          content-type: text/html
    
    

    测试controller

    package com.test.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Controller
    public class SpringBootSelfController {
    
        /** 使用springboot原生访问静态资源,下面两个方法都出现问题
         * 说明不可以通过controller访问静态资源(有模版引擎的情况下)
         * */
        @GetMapping("/aa")
        public String aa(){
            return "index";
        }
        @GetMapping("/bb")
        public String bb(){
            return "html/aa";
        }
        @GetMapping("/tt")
        public String tt(){
            return "tt";
        }
    
        /** 通过controller重定向,这种已经不使用,已经使用模版引擎了,访问页面的后缀一定要加.html */
        @GetMapping("/redirect")
        public void hello(HttpServletResponse response) throws Exception {
            response.sendRedirect("/html/redirect.html");
            //response.sendRedirect("/gogo");//也可以重定向到一个访问方法
        }
    
        /** 通过controller转发,这种已经不使用,已经使用模版引擎了,访问页面的后缀一定要加.html */
        @GetMapping("/forward")
        public void forward(HttpServletRequest request,HttpServletResponse response) throws Exception {
            request.getRequestDispatcher("/html/forward.html").forward(request,response);
        }
    
        @GetMapping("/gogo")
        public String gogo(){
            return "/html/hello";
        }
    
    }
    
    

    springboot如果和第三方引擎结合(比如thymeleaf),就会替代springmvc原有的视图解析器,原来的一些规则就不起作用了,要按照模版引擎的来

    当引入依赖spring-boot-starter-thymeleaf时,查找到ThymeleafAutoConfiguration这个自动配置类,然后找到thymeleafViewResolver这个方法。这个方法向容器返回一个thymeleaf的视图解析器,这个视图解析器会替换掉SpringMVC默认的视图解析器。
    怎么替代SpringMVC默认的视图解析器InternalResourceViewResolver?如下:
    在这里插入图片描述
    可知到,thymeleaf的自动配置类ThymeleafAutoConfiguration是在WebMvcAutoConfiguration配置类后面生效的,但是thymeleaf优先级更高
    在这里插入图片描述
    注意:优先级低的视图解析器会无效,就是说,当springboot加入thymeleaf模版引擎后,之前通过controller访问静态资源不生效了,要按照thymeleaf模版方式
    看看thymeleaf属性配置类
    在这里插入图片描述
    ThymeleafViewResolver这个类,找到createView这个方法
    总结:thymeleaf把springmvc的视图解析器组件给换了,然后这个组件会根据你填写的返回值来判断是重定向还是请求转发,然后调用的是原生的Servlet的重定向方法。

    当没有找到符合的view视图时,会创建error视图返回

    展开全文
  • 在做SpringBoot访问静态资源文件(css、js、images)时候,发现总是报错: 以为是路径中没有添加static,所以路径又添加static,再次访问如下: 额哦,还是一样的错误,看来不是这个问题。继续查找原因,发现...
  • 给大家介绍了在SpringBoot中静态资源访问方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
  • Django访问静态资源

    千次阅读 2020-08-11 03:22:29
    在html页面中访问静态资源 1.settings.py配置 DEBUG = False STATIC_ROOT = 'static' 2.url.py配置 from django.urls import path, include, re_path from django.views import static from django...
  • 有时为了优化网站访问速度,会给一些静态资源配置cdn加速,但是有时候会出现跨域访问的问题,在nginx和apache服务中可进行如下配置
  • SpringBoot访问静态资源出现404

    千次阅读 2021-11-18 15:24:54
    SpringBoot访问静态资源出现404 SpringBoot图片路径找不到 WebMvcConfigurer
  • web项目访问静态资源方法

    千次阅读 2019-07-01 10:01:30
    在web项目中经常会访问一些静态资源,js,img,css等 项目介绍如何在web项目中访问这些文件。 第一种方法直接在web.xml中配置。 将静态资源交给默认的servlet处理。 将路径文件末尾为.CSS,.JPG,.JS的路径交给默认的...
  • 加入thymeleaf 后,访问静态资源方法

    千次阅读 2021-03-18 23:39:03
    SpringBoot+thymeleaf如何访问静态资源 1.版本信息 spring boot : 2.1.8 2.目录结构 3.问题描述 在springboot项目搭建好以后,访问HTML页面时发现没有任何的样式。 4.页面路径 首先修改HTML页面对静态资源文件的...
  • java项目访问静态资源

    千次阅读 2020-03-19 11:32:08
    Java项目访问静态资源 对于实际java项目中的...
  • docker启动的nginx配置访问静态资源,访问失败 nginx配置访问静态资源 root和alias的区别 nginx访问静态资源时网页出现 403 forbidden docker启动的nginx配置访问静态资源,访问失败404
  • 1.查看80端口是否被占用,一般80端口多被apache服务占用。 netstat -anp|grep 80  2.修改apache服务的端口号 ...以上所述是小编给大家介绍的linux服务器上使用nginx访问本地静态资源的方法,希望对大家有所帮助!
  • koa访问静态资源

    千次阅读 2019-12-17 12:17:08
    使用koa-static访问静态资源 下载: npm install --save koa-static 1.引入koa-static中间件,用于访问静态文件 const Koa = require('koa') // 引入node的path模块 const path = require('path') // koa-static...
  • SpringMVC访问静态资源的三种方式

    千次阅读 2020-02-06 17:00:03
    已经设置了springMVC的静态资源访问方式,但是依然出错: 这种问题在于配置方式写错了,总结如下,针对SpringMVC有如下三种配置使用静态资源的方式: 如何你的DispatcherServlet拦截 *.do这样的URL,就不存在...
  • Tomcat 访问静态资源出现中文乱码解决办法 tomcat 静态资源html乱码 Tomcat 访问静态资源html、txt等出现中文乱码及获取Request域中数据乱码解决方案 解决IntelliJ IDEA中tomcat控制台中文乱码问题 IDEA启动TOMCAT...
  • Java项目访问静态资源

    千次阅读 2019-07-21 23:47:02
    我们访问静态资源只有两种情况: java源代码中resource目录下的文件,构建项目后会被放到类路径下,因此我们通过类字节码或类加载器访问该静态资源. // 返回当前类字节码所在路径,即 target/classes/类的包路径 this...
  • nodejs + express访问静态资源

    千次阅读 2020-01-07 13:28:35
    访问一个资源的时候,发现访问不了 方法1、加上了这个就可以访问了,static参数为静态文件存放目录:__dirname代表目录 app.use(express.static(__dirname)); 方法2、举一返二:如果把参数改为...
  • nginx下https访问静态资源配置

    千次阅读 2020-04-29 13:33:37
    server { listen 443 ssl; server_name xxx.com; ssl_certificate /etc/ssl/3843468_ftp.jukangbio.com.pem; ssl_certificate_key /etc/ssl/3843468_ftp.jukangbio.c...
  • 通过url访问静态资源

    千次阅读 2018-07-24 16:58:06
    通过url访问资源 以前都是将静态页面写在了WEB-INF下面,然后在springmvc配置文件中配置视图解析器即可通过controller中的请求方法,跳转到其他页面 &lt;bean id="jspViewResolver" class="...
  • 主要介绍了Mac环境Nginx配置和访问本地静态资源的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 本篇是记录Nginx反向代理下HTTPS访问静态资源无法加载的问题. 启用HTTPS 站点支持HTTPS是需要证书的,我是在阿里云申请的免费证书,详情请移步阿里云,证书申请后需要阿里云审核,这个时间还是比较长(至少几个小时起步...
  • vue中无法访问静态资源

    千次阅读 2020-12-18 10:54:45
    vue中无法访问静态资源原因:解决看看效果 原因: 主要是项目的图片没有放到正确的路径之下,就基本上会出现vue访问不到静态静态资源的问题 解决 将所需要的图片放到static中就可以了,在读取对象的属性的时候只需要...
  • 问题描述:员工添加和编辑使用同一页面,点击添加按钮可以正常显示,点击编辑就无法访问js、css。 ![图片说明](https://img-ask.csdn.net/upload/201908/23/1566545361_152563.png) ![图片说明]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 565,005
精华内容 226,002
关键字:

访问静态资源

友情链接: forward.zip