如何通过注解配置spring boot,以便在web.xml中有类似的东西?

2024-04-09

如何通过注释配置spring boot以获得类似于web.xml中的内容?

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspf</url-pattern>
        <page-encoding>UTF-8</page-encoding>
        <scripting-invalid>false</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>

可能已经晚了,但希望它能帮助其他想要同样东西的人。我也在尝试做同样的事情。我开始学习 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 &mdash; 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过注解配置spring boot,以便在web.xml中有类似的东西? 的相关文章

随机推荐