xet*_*a11 17 spring templates jsp spring-mvc spring-boot
我启动了一个Spring Boot MVC项目,并意识到有两个文件夹resources
.一个叫templates
,另一个叫static
.我真的很喜欢这个文件夹设置.
问题是我在我的视图中使用JSP模板.我无法.jsp
在templates
文件夹中放置模板并使其工作.我需要做的是创建一个webapp
与src
和相同级别的文件夹resources
.将JSP模板放在那里,然后找到我的视图.
我需要重新配置以在其中的templates
文件夹中实际使用我的JSP模板resources
?
Fra*_*ner 14
根据Maven的文档, src/main/resources
最终会WEB-INF/classes
在WAR中出现.
这可以为你的Spring Boot提供诀窍application.properties
:
spring.mvc.view.prefix = /WEB-INF/classes/templates
spring.mvc.view.suffix = .jsp
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢Java配置,那么这是要走的路:
@EnableWebMvc
@Configuration
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver jspViewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setPrefix("/WEB-INF/classes/templates/");
bean.setSuffix(".jsp");
return bean;
}
}
Run Code Online (Sandbox Code Playgroud)
更新完整的示例
此示例基于Spring的初始化程序(具有"Web"依赖性的Gradle项目).我刚添加apply plugin: 'war'
到build.gradle
,添加/更改的文件下方,德建项目,gradle war
并将其部署到我的应用服务器(Tomcat的8).
这是此示例项目的目录树:
\---src
+---main
+---java
| \---com
| \---example
| \---demo
| ApplicationConfiguration.java
| DemoApplication.java
| DemoController.java
|
\---resources
+---static
\---templates
index.jsp
Run Code Online (Sandbox Code Playgroud)
ApplicationConfiguration.java:见上文
DemoApplication.java:
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(DemoApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
DemoController.java:
@Controller
public class DemoController {
@RequestMapping("/")
public String index() {
return "index";
}
}
Run Code Online (Sandbox Code Playgroud)
的index.jsp:
<html>
<body>
<h1>Hello World</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
借助为Thymeleaf和FreeMarker自动配置的ResourceUrlEncodingFilter,可以在运行时在模板中重写资源链接.您应该在使用JSP时手动声明此过滤器. 资源
除REST Web服务外,您还可以使用Spring MVC来提供动态HTML内容.Spring MVC支持各种模板技术,包括Thymeleaf,FreeMarker和JSP.
[...]
如果可能,应该避免使用JSP,将它们与嵌入式servlet容器一起使用时有几个已知的限制.
[..]
当您使用其中一个模板引擎和默认配置时,您的模板将自动从src/main/resources/templates中获取.
- 使用Tomcat它应该可以使用war包装,即可执行的war会起作用,并且也可以部署到标准
容器(不限于但包括Tomcat).- 由于Tomcat中的硬编码文件模式,可执行jar将无法工作.
- 使用Jetty它应该可以使用war包装,即可执行的war会起作用,并且也可以部署到任何标准容器.
- Undertow不支持JSP.
- 创建自定义error.jsp页面不会覆盖错误处理的默认视图,而应使用自定义错误页面.
告诉spring boot从哪里加载JSP files
.在application.properties
集合中
spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .jsp
Run Code Online (Sandbox Code Playgroud)
如果你想使用JSP
弹簧靴,这里有两个例子:
https://github.com/joakime/spring-boot-jsp-demo
归档时间: |
|
查看次数: |
17709 次 |
最近记录: |