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