当前位置: 首页 > 知识库问答 >
问题:

Spring boot服务于静态资源-站点地图。xml

闾丘德宇
2023-03-14

我从事spring boot 1.3.3的工作。使用JSP作为视图技术发布。

JSP页面、静态资源(如CSS、JS和图像)正在正确加载。但是如何提供txt或xml等静态资源(robots.txt、sitemap.xml)

我的控制器正在处理请求并尝试呈现jsp视图。

一个pplication.java

@SpringBootApplication
public class SampleWebJspApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SampleWebJspApplication.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleWebJspApplication.class, args);
    }

}

控制器

@Controller
public class WelcomeController {

    @RequestMapping(value = "/{name}")
    public String welcome(@PathVariable String name) {       
        return name;
    }
}

application.properties

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

下面的URL由控制器处理,它呈现home.jsp

/home  
/home.css
/home.js
/home.txt 
/home.xml 

以下URL无效

/home.jsp - 404 
/robots.txt - 404 - trying to render robots.jsp
/sitemap.xml - 404 - trying to render sitemap.jsp

共有3个答案

冯招
2023-03-14

您已经用这一行配置了Spring的视图解析器。mvc。看法前缀,因此控制器返回的每个响应都将链接到视图解析器,该解析器将根据返回的字符串名称(不确定是否已将此文件夹放置在资源下,因为您的应用程序是spring boot应用程序,而非java WEB应用程序)尝试在视图解析器下查找资源。为了做到这一点并保留视图解析器,要么连接另一个servlet以共享静态资源,要么连接一个带有默认位置的ResourcesController。类似于:

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
        "classpath:/myStaticResources/", "classpath:/static/" };

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
}  

此处或此处提供更多信息

此外,Spring boot也为您提供了这种方式:

spring.resources.static类路径

有关应用程序属性的详细信息,请参见此处

别帅
2023-03-14

Jsp仍然适用于spring boot。

不确定您是否已经这样做了,但将这些依赖项添加到您的maven或gradle很重要。

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
松飞翮
2023-03-14

Spring Boot不再做jsp了,他们试图强迫您使用thymeleaf或其他模板引擎,静态资源可以从某些目录获得/静态是其中之一。而thymeleaf文件需要放在模板文件夹中。

我在最新的spring boot上的设置如下

应用程序/src/main/resources/static

                          /templates

                          application.properties

对于其他的,您需要为其他位置/robots.txt等添加一个resourcehandler

 类似资料:
  • 前言 一个http请求访问web服务静态资源,一般响应结果有三种情况 访问文本,例如js,css,png,jpg,gif 访问静态目录 找不到资源,抛出404错误 原生koa2 静态资源服务器例子 demo源码 https://github.com/ChenShenhai/koa2-note/blob/master/demo/static-server/ 代码目录 ├── static # 静态资

  • 每个网站都需要静态资源:图片、样式表、网站图标(favicon)等。在这种情况下,您可以在项目的根目录下创建一个名为 static 的目录。 放入 该目录中的每个文件都将被复制到 生成的 build 文件夹中,并保留目录的层级结构。例如,如果您将名为 sun.jpg 的文件添加到 static 文件夹中,则该文件将被复制到 build/sun.jpg 路径。 这意味着: 对于 baseUrl: '

  • 使用Spring Boot web应用程序,我试图从项目外部的文件系统文件夹中为静态资源提供服务。 文件夹结构类似于:- Spring配置:- 在我的浏览器中点击“http://localhost:9999/test/test.js”返回404。 提供绝对文件路径有效:- 如何提供相对位置?绝对路径将使我的生活在构建和部署过程中变得艰难。

  • 我正在构建一个PWA应用程序,因此我: 像往常一样创建一个新的Angular应用(CLI 9.1.8); 根据文档(https://angular.io/guide/service-worker-getting-started)添加了PWA支持; 用; 将其复制到配置为服务静态网站的S3存储桶; 在Chrome成功地浏览了它。 问题是: 事件永远不会被触发; 开发者工具- 另一方面,如果我在本地服

  • 下面的指引都基于以下几个假设: 你正在使用的是默认的构建输出路径(dist)。这个路径 可以使用 build.outDir 更改,在这种情况下,你可以从这篇指南中推断出所需的指令。 Vite 已经被安装为了一个你项目的本地开发依赖(dev dependency),并且你已经配置好了如下的 npm script: 你正在使用 npm,或者使用了 Yarn 或其他的包管理工具,可以运行下面的脚本指令:

  • JS 代码中引用媒体文件 可以直接在代码中使用 ES6 的 import 语法引入文件并在 JSX 中使用,目前仅支持图片类型的媒体文件。 JSON 中引用媒体文件 当你需要在 app.json 中配置使用的本地媒体文件(比如导航栏图片地址)时,可以将使用到的媒体文件放置到 src 下的某个目录下,并在 build.json 中将其配置到 constantDir 字段的数组中,示例如下: {