可能已经晚了,但希望它能帮助其他想要同样东西的人。我也在尝试做同样的事情。我开始学习 spring boot 2 并尝试将我的一个简单的 spring mvc 应用程序迁移到 spring boot。在我的 spring mvc 中,我使用 web.xml 和 jsp 进行模板化。虽然 web.xml 非常小,但它包括<jsp-config>...</jsp-config>
部分。这就是我在 SpringBoot 主文件中所做的并且它正在工作
@SpringBootApplication
public class SpringBootSimpleApp extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootSimpleApp.class);
}
/**
* <jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
<page-encoding>UTF-8</page-encoding>
<!-- This change proves that you have replaced all Java code in your JSPs because any JSPs with Java code cannot compile
with this setting enabled.
-->
<scripting-invalid>true</scripting-invalid>
<include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
<default-content-type>text/html</default-content-type>
</jsp-property-group>
</jsp-config>
*/
@Bean
public ConfigurableServletWebServerFactory configurableServletWebServerFactory ( ) {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
super.postProcessContext(context);
JspPropertyGroup jspPropertyGroup = new JspPropertyGroup();
jspPropertyGroup.addUrlPattern("*.jsp");
jspPropertyGroup.addUrlPattern("*.jspf");
jspPropertyGroup.setPageEncoding("UTF-8");
jspPropertyGroup.setScriptingInvalid("true");
jspPropertyGroup.addIncludePrelude("/WEB-INF/jsp/base.jspf");
jspPropertyGroup.setTrimWhitespace("true");
jspPropertyGroup.setDefaultContentType("text/html");
JspPropertyGroupDescriptorImpl jspPropertyGroupDescriptor = new JspPropertyGroupDescriptorImpl(jspPropertyGroup);
context.setJspConfigDescriptor(new JspConfigDescriptorImpl(Collections.singletonList(jspPropertyGroupDescriptor), Collections.emptyList()));
}
};
}
public static void main( String[] args ) {
SpringApplication.run(SpringBootSimpleApp.class, args);
}
}
这是我的项目结构
这是我的 toDos.jsp
<template:main htmlTitle="Landing Page" >
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<h1>ToDo Application</h1>
<p>A simple Rest API Spring MVC application</p>
</div>
<div class="page-header">
<h1>API</h1>
<a href="<c:url value = "/services/rest/toDos/get"/>">Current ToDos</a>
</div>
</div>
</template:main>
main.tag
<%@ tag body-content="scriptless" trimDirectiveWhitespaces="true" %>
<%@ attribute name="htmlTitle" type="java.lang.String" rtexprvalue="true" required="true" %>
<%@ attribute name="headContent" fragment="true" required="false" %>
<%@ include file="/WEB-INF/jsp/base.jspf" %>
<!DOCTYPE html>
<head>
<title>Spring Security — SAML 2.0 Service Provider :: <c:out value="${fn:trim(htmlTitle)}" /></title>
<link rel="stylesheet" href="<c:url value="/webjars/bootstrap/4.4.1/css/bootstrap.css" />" />
<script type="text/javascript" src="<c:url value="/webjars/jquery/3.4.1/jquery.js" />" ></script>
<script type="text/javascript" src="<c:url value="/webjars/bootstrap/4.4.1/js/bootstrap.js" />" ></script>
<jsp:invoke fragment="headContent" />
</head>
<body>
<jsp:doBody />
</body>
</html>
基础.jspf
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="template" tagdir="/WEB-INF/tags/template" %>
希望这个答案能帮助其他人。我只是在学习 spring boot2 时这样做的。
Thanks