在Tomcat上部署.war时,镜像路径不正确



开发完Java web项目后,我使用maven创建了一个war包,稍后将其部署到Tomcat上。我的部署是通过将war文件上传到tomcat的webapps文件夹来完成的。但是,当我重新启动Tomcat服务器时,我发现图像路径和css/js文件路径不正确。我是一个新手Tomcat的东西,我试着阅读一些在线帮助/文档,但发现没有太多有用的答案。

我将war文件命名为admin。Tomcat重启后创建了一个名为"admin"的新文件夹。所以我使用localhost:8080/admin

访问web应用程序

我使用Ninja框架来开发我的web应用程序,下面是我的web.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0"
         metadata-complete="true">
    <display-name>ninja</display-name>
    <listener>
        <listener-class>ninja.servlet.NinjaServletListener</listener-class>
    </listener>
    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>guiceFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

在我的模板(Freemarker)中,我有以下url用于提供静态文件,据我所知,它是绝对路径,这可能是我使用Tomcat(?)的问题的原因

<link href="/assets/admin/font-awesome/css/font-awesome.css" rel="stylesheet">

最好的方法是像这样使用${contextPath}:

<link href="${contextPath}/assets/admin/font-awesome/css/font-awesome.css" rel="stylesheet">

这会自动将"admin"添加到你的路径中。

更多:http://www.ninjaframework.org/documentation/html_templating/advanced_topics.html

如果您作为admin.war部署,那么您需要将您的资产路径设置为/admin/assets/...

最新更新