yst*_*an- 19 jsp spring-mvc maven spring-boot
我正在尝试使用Spring Boot重新编写我的配置繁重的vanilla Spring MVC项目.我使用Spring Boot Initiaizer在IntelliJ中启动了一个全新的Spring Boot项目,我将采用最小的基于Java的配置.很多教程都指出生成的默认主类是足够的,并且@SpringBootApplication包含了所有内容.我有一个示例REST控制器工作并返回一个序列化对象作为JSON,但它似乎得到一个显示的视图证明是困难的.我的结构如下,除了我创建的webapps目录之外,其他一切都是默认的.
src
`-main
`-java
`-resources
`-static
`-templates
`-webapp
`-WEB-INF
`-home.jsp
Run Code Online (Sandbox Code Playgroud)
控制器很简单.
@Controller
public class ViewMaster {
@RequestMapping("/home")
public String home() {
return "home";
}
}
Run Code Online (Sandbox Code Playgroud)
没有任何配置,我想知道Spring Boot期望存储视图的位置以及扩展名(html?).我也尝试包含以下内容application.properties但仍然出现404错误.在资源中移动WEB-INF目录或仅移动html文件也无济于事.
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
Run Code Online (Sandbox Code Playgroud)
我也试过在我的pom.xml中包含这些依赖项而没有任何影响.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些痛苦明显的东西,所以如果有人可以指出这一点,那就谢天谢地!
yst*_*an- 16
解决方案
我通过反复试验找到了答案,结果令人讨厌.如果这个结论是错误的,我希望有人可以纠正我,但看起来Spring Boot不喜欢这个字符串WEB-INF.我将WEB-INF目录重命名为view并更改application.properties为以下内容并成功加载视图.
spring.mvc.view.prefix=/view/
spring.mvc.view.suffix=.jsp
Run Code Online (Sandbox Code Playgroud)
其他调查结果
本练习的目的是创建一个基于Java 的最小配置的工作示例,以便继续最小化设置.然后我发现在多个SO线程和论坛上抛出的大量建议没有帮助.@JBNizet在他对Spring Boot文档的评论中提供了一个链接,其中列出了一个没有人提到过的非常突出的观点:JSP根本不能很好地使用Spring Boot,因为它具有局限性,具体取决于所选的嵌入式容器.考虑到这一点,我决定尝试用ThymeLeaf模板替换JSP.
我的新工作配置消除了对这些的需要:
application.properties:spring.mvc.view.prefix+spring.mvc.view.suffixorg.springframework.boot / spring-boot-starter-tomcatorg.springframework.boot / tomcat-embed-jasperjavax.servlet / jstl所以只是默认的Spring Boot模板和2个ThymeLeaf依赖项,其中的视图名为ViewName.html放置src/main/resources/templates.
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
没有任何配置 Spring Boot 期望视图存储在 /webapp 中,视图页面可以是任何格式,这取决于 application.properties 设置(如 html 或 jsp)将 .jsp 设置为 /views/ 文件夹中的视图页面
spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp //for .html change it to .html
Run Code Online (Sandbox Code Playgroud)
并且你必须使用 tomcat jaspher ,如果你不包含它,页面将不会被解析,而是作为文件下载
spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31905 次 |
| 最近记录: |