找不到CSS&带有排除模板的JS文件JAVA + Spring

时间:2017-03-29 18:38:57

标签: javascript java css spring freemarker

我正在为我的项目使用spring,并且我将所有模板文件排除在另一个“html-Project”之外。我之所以这样做,是因为我可以在没有任何重新部署的情它工作正常,spring应用程序找到所有模板。但现在,模板无法找到任何css或js文件。该模板尝试在我的spring-project中搜索文件,但它们包含在html项目中。我怎么解决它?我需要像我认为的相对路径。

项目

SpringApp
---- lib
---- src
--------主要 ------------ java
---------------- com.example.test
--------------------控制器
------------------------ ShowIndex.java
------------资源
------------ webapp
--------测试

HTML的模板
---- lib
---- src
--------主要 ------------ java
------------资源
------------模板
---------------- css
-------------------- bootstrap.min.css
---------------- js
-------------------- bootstrap.min.js
----------------图片
---------------- index.ftl
---------------- test.ftl
--------测试

ShowIndex.java的内容

@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(ModelMap model) {
    model.put("prename", "Hans-Peter");

    return "index";
}

index.ftl的HeaderContent

<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="./css/bootstrap.min.css">
<link rel="stylesheet" href="./css/zeus.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>

有什么想法吗?

我用:
JAVA
Spring WebMVC
Freemarker作为TemplateEngine

1 个答案:

答案 0 :(得分:0)

将您的cssjsimages放入src/main/webapps文件夹,与模板ftl文件分开。

修改

使用Servlet 3.0,您有另一种选择,但可能无法在所有容器中运行......

  1. 创建META-INF/resources文件夹
  2. 将所有资源js, css, images等放到此文件夹
  3. 和&#39; jar&#39;它。
  4. 例如,我创建了一个assembly.xml文件来自动完成这项工作

    <assembly>
        <id>bin</id>
        <formats>
            <format>jar</format>
        </formats>
        <includeBaseDirectory>false</includeBaseDirectory>
        <dependencySets>
            <dependencySet>
                <useProjectArtifact>false</useProjectArtifact>
                <outputDirectory>/</outputDirectory>
                <excludes>
                    <exclude>**</exclude>
                </excludes>
            </dependencySet>
        </dependencySets>
        <fileSets>
            <fileSet>
                <directory>target/classes</directory>
                <outputDirectory>/</outputDirectory>
                <includes>
                    <include>**/*.class</include>
                </includes>
                <excludes>
                    <exclude>**/DefaultController.class</exclude>
                </excludes>
            </fileSet>
            <fileSet>
                <directory>WebContent</directory>
                <outputDirectory>META-INF/resources</outputDirectory>
                <includes>
                    <include>/WEB-INF/jsp/**</include>
                </includes>
            </fileSet>  
    
            <fileSet>
                <directory>WebContent</directory>
                <outputDirectory>META-INF/resources</outputDirectory>
                <includes>
                    <include>js/**</include>
                    <include>plugins/**</include>
                </includes>
            </fileSet>
        </fileSets>
    </assembly>
    

    使用maven建立mvn package时,此文件有效。

    PS

    在maven pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        ...
    
        <build>
            ...
    
            <plugins>
                ...
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <descriptors>
                            <descriptor>assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    
            </plugins>
        </build>
        ...
    
    </project>