我使用JSP作为视图技术在spring boot 1.3.3.RELEASE上工作。
JSP页面,CSS,JS和图像等静态资源正在正确加载。但是如何提供静态资源,如txt或xml(robots.txt,sitemap.xml)
我的控制器正在处理请求并尝试呈现jsp视图。
Application.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
以下网址由控制器处理并呈现home.jsp
/home
/home.css
/home.js
/home.txt
/home.xml
以下网址无效
/home.jsp - 404
/robots.txt - 404 - trying to render robots.jsp
/sitemap.xml - 404 - trying to render sitemap.jsp
答案 0 :(得分:1)
Spring-Boot不再使用jsp,他们试图强迫你使用百日咳或其他模板引擎,静态资源可从某些目录获得。 / static就是其中之一。并且百万美元文件需要在模板文件夹中。
我最新弹簧靴的设置如下
应用/ SRC /主/资源/静态
/templates application.properties
对于其他的,您需要为其他位置/robots.txt等添加资源处理程序
答案 1 :(得分:0)
Jsp仍适用于春季靴子。
不确定您是否已经这样做但重要的是将这些依赖项添加到您的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>
答案 2 :(得分:0)
您已使用此行spring.mvc.view.prefix
配置了Spring的View Resolver,因此控制器返回的每个响应都将链接到视图Resolver,后者将尝试根据/WEB_INF/JSP
查找资源您返回的字符串名称(不确定您是否已将此文件夹放在资源下,因为您的应用程序是Spring引导程序,而不是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-locations=classpath:/META-INF/resources/,classpath:/resources/
有关应用程序属性的更多信息here