我从事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
您已经用这一行配置了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类路径
有关应用程序属性的详细信息,请参见此处
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>
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 字段的数组中,示例如下: {