1

我需要在 glassfish5 上运行的 jax-rs 应用程序中的 jsp 文件中添加 css 和 js。pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>elearning_ontology</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>elearning_ontology</name>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <junit.version>5.6.2</junit.version>
    </properties>

    <dependencies>

      

        <dependency>
            <groupId>javax.mvc</groupId>
            <artifactId>javax.mvc-api</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.krazo</groupId>
            <artifactId>krazo-jersey</artifactId>
            <version>1.1.0-M1</version>
        </dependency>



        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.owlapi</groupId>
            <artifactId>owlapi-distribution</artifactId>
            <version>5.1.17</version>

        </dependency>
        <dependency>
            <groupId>com.github.galigator.openllet</groupId>
            <artifactId>openllet-owlapi</artifactId>
            <version>2.6.5</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.0</version>
            </plugin>
        </plugins>
    </build>
</project>

我尝试使用相对路径添加 css,c:url但没有机会:

     <link rel="stylesheet" href="<c:url value = "bootstrap-rtl.min.css"/>" media="screen">

<link rel="stylesheet" href="assets/css/bootstrap-rtl.min.css" media="screen">

当我查看页面源并单击 css url 时,我看到一个 404 页面。我想我应该通过Application或 web.xml 进行一些配置。但我不知道如何

PS:它是一个完整的 mvc应用程序。所以所有路由都是通过控制器类控制的。
所以(也许)只能访问在控制器中定义或在配置文件中定义的路径。相对或绝对路径不起作用。

图片显示了应用程序的结构: 在此处输入图像描述

4

1 回答 1

1

静态文件不需要在 WEB-INF 文件夹中。我们将 JSP 文件放在那里以保护它们不被公开。资产可以直接进入src/main/webapp文件夹。这是默认 servlet 为静态文件提供服务的根目录。

所以假设你有以下结构

src/main/webapp
           |
           +--- assets
           |      |
           +      +--- css
           |            |
           +            +--- styles.css
           |
           +--- WEB-INF
                  |
                  +--- jsp
                        |
                        +--- products.jsp

您可以使用products.jsp页面中的以下链接

<link rel="stylesheet" href="<c:url value="/assets/css/styles.css"/>" />

由于我们使用的是c:url,它会一直为我们添加基本 URL 到上下文路径,即http://localhost:8080/<app-name>/. 添加到 CSS 页面的路径,我们将拥有

http://localhost:8080/<app-name>/assets/css/styles.css

这正是我们想要的。当浏览器对该页面发出请求时,默认 servlet 将从我们当前拥有的位置提供它。

于 2020-11-28T17:02:48.683 回答