精华内容
下载资源
问答
  • 一般现在都前后端分离方式,SpringBoot主要提供接口服务,但...SpringBoot 默认配置就可以直接URL访问下面路径下的静态资源 classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classp

    一般现在都前后端分离方式,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项目中直接访问静态资源时,如 http://localhost:8080/3.png 发现报了404错误,感觉很奇怪,在记忆中,只要把静态资源直接放到/static,/public,/resources,/templates下时,就可以象上面...

    最近尝试在一个springboot项目中直接访问静态资源时,如

    http://localhost:8080/3.png
    

    发现报了404错误,感觉很奇怪,在记忆中,只要把静态资源直接放到/static,/public,/resources,/templates下时,就可以象上面一样直接进行访问。
    我尝试新建了一个项目,什么东西都不修改,只是简单地添加了spring-boot-starter-web模块,然后直接访问,发现成功了,那就是说我的记忆没啥大问题,我前一个项目肯定是修改了什么东西。

    一开始我怀疑是jar包的问题,检查了很久,相关jar包删了加,加了删,问题没有解决,然后我想是不是过滤器的问题,把所有自定义的过滤器都去掉了,但还是老样子。

    最后,因为WebMvcAutoConfiguration是SpringMVC的自动配置类,所以对其进行检查,发现WebMvcConfiguration中

    @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    意思是该配置在不存在WebMvcConfigurationSupport 类时生效
    

    所以,静态资源访问失效的原因就是我在前一个项目中继承了WebMvcConfigurationSupport,导致了springboot中原本的静态资源映射失效了,所以,如果要解决这个问题,一是不再继承该类,这当然不太可能,二就是手动添加静态资源映射路径:

        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**").addResourceLocations("classpath:/static/")
            .addResourceLocations("classpath:/public/")
            .addResourceLocations("classpath:/resources/")
            .addResourceLocations("classpath:/templates/");
            super.addResourceHandlers(registry);
        }
    

    这样,问题就解决了。
    最后提一下,templates这个文件夹通常用于放置通过controller来进行跳转的页面,需要模块spring-boot-starter-thymeleaf的支持。。

    展开全文
  • springboot 直接访问静态资源最全方法

    千次阅读 2020-01-06 15:23:11
    /** * 配置静态资源映射 * * @author sunziwen * @version 1.0 * @date 2018-11-16 14:57 **/ @Component public class WebMvcConfig implements WebMvcConfigurer { /** * 添加静态资源文件,外部可以直接访问地址...

    方式一:重写webConfig

    @Component
    public class WebMvcConfig implements WebMvcConfigurer {
        /**
         * 添加静态资源文件,外部可以直接访问地址
         *
         * @param registry
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        }
    }

     

    方式二:修改application文件

    application.yml:配置方式

    spring:
      # 修改默认的静态寻址资源目录
      resources:
        static-locations: classpath:/templates/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
    spring:
    # 静态文件请求匹配方式
       mvc:
        static-path-pattern: /**

    application.properties:配置方式

    # 静态文件请求匹配方式
    spring.mvc.static-path-pattern=/**
    # 修改默认的静态寻址资源目录
    spring.resources.static-locations= classpath:/templates/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

     

    访问路径     http://localhost:8080/项目名/static/XXX.png

     

     

    展开全文
  • SpringMVC访问静态资源

    千次阅读 2017-07-24 23:14:26
    SpringMVC访问静态资源

    SpringMVC拦截静态资源

    工作中使用到了SpringMVC这个框架,最近也在学习中,在配置的过程中,遇到静态资源404的情况,检查了路径等信息都是正确的之后还是会出现这样的问题,最后google了一下,发现是SpringMVC使用过程中,前端控制器会拦截所有的请求,会把静态资源路径当成一次请求进行拦截,所以会提示找不到相关的视图

        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    解决的方案是使用默认的Servlet去拦截请求,当请求是静态的资源的时候,提前拦截,不再经过DispatchServlet

    解决方案

    1. 在web.xml中DispatchServlet的前面添加
        <!-- 设置默认的servlet拦截器,拦截静态文件 -->
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.gif</url-pattern>
            <url-pattern>*.png</url-pattern>
            <url-pattern>*.jpg</url-pattern>
            <url-pattern>*.js</url-pattern>
            <url-pattern>*.css</url-pattern>
            <url-pattern>*.chm</url-pattern>
            <url-pattern>*.gz</url-pattern>
            <url-pattern>*.txt</url-pattern>
            <url-pattern>*.eot</url-pattern>
            <url-pattern>*.woff</url-pattern>
            <url-pattern>*.woff2</url-pattern>
            <url-pattern>*.ico</url-pattern>
            <url-pattern>*.ttf</url-pattern>
            <url-pattern>*.otf</url-pattern>
            <url-pattern>*.html</url-pattern>
        </servlet-mapping>
    1. 在springmvc的配置文件中添加如下
    <mvc:default-servlet-handler/>
    1. 在springmvc的配置文件中添加
    <mvc:resources location="" mapping="" />

    需要补充一些之前漏掉的内容:

    • 首先静态资源可以直接放在webapp也可以放在WEB-INF下,对于这两种情况,上面的解决方案不都是有效的

      1. 当静态资源放在webapp下也就是根目录下面,这个时候我们使用上面的三种方案都可以解决静态资源访问的问题
      2. 当静态资源被放在WEB-INF下的时候,这个时候我们访问静态资源写绝对路径是带有WEB-INF下的,如果采用修改web.xml的方式,默认的servlet发现是一个静态资源的时候就直接响应这个请求而不会到springmvc的前端控制器了,但是因为静态的资源是在WEB-INF下,所以仍然会出现访问不到的情况…

    修改web.xml
    web.xml.png

    请求路径

    请求路径

    文件结构

    效果
    采用修改web.xml的方式

    可以看到在修改web.xml的这种方案中,当静态资源在WEB-INF的时候还是请求不到的

    综上,采用springmvc中配置是理想的解决静态资源访问的方式

    展开全文
  • Java项目访问静态资源

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

    千次阅读 2015-05-11 20:01:37
    本文要以一个例子来说明SpringMVC访问静态资源 /images /**映射到 ResourceHttpRequestHandler 进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中...
  • 跟着大牛一起学习springboot(使用的Idea IDE),学习到Springboot整合Freemarker的时候,项目目录、依赖配置都没问题,项目运行能正常返回json,但就是无法直接访问静态资源,报404错误。 项目结构 错误信息 ...
  • SpringMVC访问静态资源的三种方式

    万次阅读 2017-10-11 22:55:58
    如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。 问题原因:罪魁祸首是web.xml下对...
  • web项目访问静态资源方法

    千次阅读 2019-07-01 10:01:30
    在web项目中经常会访问一些静态资源,js,img,css等 项目介绍如何在web项目中访问这些文件。 第一种方法直接在web.xml中配置。 将静态资源交给默认的servlet处理。 将路径文件末尾为.CSS,.JPG,.JS的路径交给默认的...
  • 最近在写一个前端案例的时候,突然发现我的...原来WEB-INF是无法直接访问静态资源的,我们只要把静态资源目录移至其他目录下即可。 资源放在WEB-INF目录下启动Tomcat无法直接访问 资源移至其他目录即可 ...
  • springboot访问静态资源两种情况

    千次阅读 2020-03-07 10:46:05
    1.springboot自身访问静态资源 2.springboot结合第三方模版引擎访问静态资源 先贴上一个项目 springboot自身访问静态资源 1.在springboot项目中,访问静态资源是怎么配置的?哪里体现? springboot默认访问静态资源路径...
  • 所以如果要使客户端能够直接访问服务端的静态资源(如 html,jsp,js,css,image,txt 等),可通过以下两种方法: 1、在SpringMVC的配置文件(spring_mvc.xml)中进行相关配置 如下,在 SpringMVC的配置文件 ...
  • 通过url访问静态资源

    千次阅读 2018-07-24 16:58:06
    通过url访问资源 以前都是将静态页面写在了WEB-INF下面,然后在springmvc配置文件中配置视图解析器即可通过controller中的请求方法,跳转到其他页面 &lt;bean id="jspViewResolver" class="...
  • springMVC访问静态资源

    千次阅读 2017-04-12 22:33:04
    也就是说,所有的请求都会被springMVC拦截,根据HandlerMapping的配置来匹配对应的URL映射,而对于静态资源来说,默认的Spring MVC是没有注册匹配规则的,此时若你去请求一个静态资源,则会报404错误。 2.设置...
  • idea中无法访问静态资源

    千次阅读 2019-06-13 18:37:43
    页面无法访问静态资源时查看浏览器开发者工具中的路径。 可能时自己加了项目的根目录,所以出错: server: servlet: context-path: /ibook 静态资源的路径为 ...
  • Springboot中如何访问静态资源

    千次阅读 2018-09-11 14:52:10
    1. application中需要先行的两个配置项 1.1 spring.mvc.static-path...换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求 比如下面这个配置 spring.mvc.static-path-pattern=/so...
  • express访问静态资源

    千次阅读 2019-07-15 00:13:02
    nodejs 内置变量含义 __dirname 表示当前文件所在的目录的绝对路径 ...利用nginx的反向代理的功能,如果浏览器是访问静态资源直接交给nginx处理,如果是非静态资源的业务逻辑处理,则交给nodejs处理
  • 如果想直接测试Kong网关的性能,最好是请求到达网关后取本地资源直接返回,而不是经过域名解析、负载、转发等等耗时。 本文所用的Kong是1.2.0版本,配置请求返回一个txt文件。(nginx 下那种alias方式在kong中好像...
  • SpringMVC访问静态资源访问不到?

    千次阅读 2019-03-27 14:27:26
    Tomcat中处理静态资源访问的servlet(default)的映射路径为/. 在启动项目的时候,在Tomcat中的web.xml是先加载的,项目的web.xml是后加载的,如果配置了相同的映射路径,后面的会覆盖前者. 也就是说,Sprin...
  • 很多场景我们都需要用到网络地址直接访问静态资源,诸如微信小程序的图片路径,富文本的图片路径,如何让服务器某个地方的静态图片资源能通过网络地址直接访问是很重要的。 举个例子,比如图片存在服务器/www/Image...
  • nginx访问静态资源报404错误的坑

    千次阅读 2020-06-16 01:04:27
    使用root无加密访问静态资源原理:举例:误区:2.使用alias访问静态资源 1.使用root无加密访问静态资源 配置文件: location /download/ { root /home/; autoindex on; } 访问url: ip:端口/download 注意,接...
  • 使用express访问静态资源文件出现404

    千次阅读 2019-11-05 12:26:21
    1.设置app.use(express.static(__dirname)); 根目录下直接访问当前url+public/... 2.app.use(express.static('public')); public目录下直接访问当前url+/文件,不需要在路径加public ...
  • 使用SpringBoot简单快速的访问静态资源 首先需要下载Springboot访问静态资源的Jar文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-...
  • springMVC无法访问静态资源问题

    万次阅读 热门讨论 2018-03-14 18:14:57
    解决这个问题涉及到两个方面的问题: 配置问题 、引入静态文件问题1、配置问题web.xml配置的DispatchServlet如下: &lt;servlet&gt; &lt;servlet-name&gt;springmvc&lt;/servlet-name&gt...
  • spring boot 解决无法访问静态资源

    千次阅读 2017-08-22 11:36:15
    在application.yaml中加入: spring.jersey.application-path: /rest 访问controller中的方法:... ...将静态资源放在resources的static下,访问静态资源直接访问http://localhost:port/**.htm 如下图:
  • springboot之访问静态资源路径问题

    千次阅读 2018-12-20 15:54:26
    在springboot项目种默认访问静态资源是在resources下的这四个文件夹,依次访问顺序是,META-INF下面的resources,resources,static,public,也就是先从META-INF下面的resources中取,访问的时候不加文件夹的名称可以直接...
  • 在学习springboot入门的时候,遇到了这样一个问题,静态资源访问不到。于是上网各种搜索,最终解决。 在springboot项目中默认访问路径是static文件夹和template文件夹,static文件夹下的资源可以通过浏览器直接访问...
  • SpringBoot+thymeleaf如何访问静态资源

    千次阅读 2019-09-15 11:47:08
    SpringBoot+thymeleaf如何访问静态资源 1.版本信息 spring boot : 2.1.8 2.目录结构 3.问题描述 在springboot项目搭建好以后,访问HTML页面时发现没有任何的样式。 4.页面路径 首先修改HTML页面对静态...
  • webpack简单搭建localhost访问静态资源

    千次阅读 2019-03-21 09:17:27
    前端开发过程中,静态页面直接双击HTML文件就能在...今天分享的只是最简便用webpack-dev-server快速localhost访问静态资源。 Node环境一定要有,这个我就不说了。新建一个文件夹,注意,这边文件夹最好不要中文,不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 366,579
精华内容 146,631
关键字:

直接访问静态资源