Java 从Velocity模板链接到css文件

Java 从Velocity模板链接到css文件,java,tomcat,web-applications,velocity,Java,Tomcat,Web Applications,Velocity,我不熟悉servlet和Velocity模板,我正在尝试将我的.vm模板链接到一个.css文件。.vm文件和css文件位于Tomcat的根目录中。文件本身显示良好,但css不起作用 以下链接不起作用: <link rel="stylesheet" type="text/css" href="style.css"/> 然后引用如下内容: <link rel="stylesheet" type="text/css" href="$stylesheet"/> 此外,我无

我不熟悉servlet和Velocity模板,我正在尝试将我的.vm模板链接到一个.css文件。.vm文件和css文件位于Tomcat的根目录中。文件本身显示良好,但css不起作用

以下链接不起作用:

<link rel="stylesheet" type="text/css" href="style.css"/>
然后引用如下内容:

<link rel="stylesheet" type="text/css" href="$stylesheet"/>

此外,我无法在浏览器中打开css文件,即使它确实存在

web.xml包含以下内容:

<!-- register servlet -->
<servlet>
    <servlet-name>testvmservlet</servlet-name>
    <servlet-class>net.myapp.app.TestVMServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>testvmservlet</servlet-name>
    <url-pattern>/velocity.service</url-pattern>
</servlet-mapping>

<!-- mapping all .vm files to velocity servlets -->
<servlet>
    <servlet-name>velocity</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>

</servlet>
<servlet-mapping>
    <servlet-name>velocity</servlet-name>
    <url-pattern>*.vm</url-pattern>
</servlet-mapping>

testvmservlet
net.myapp.app.TestVMServlet
testvmservlet
/速度服务
速度
org.apache.velocity.tools.view.servlet.VelocityViewServlet
速度
*.vm
我需要参考相对于应用程序或相对于Velocity的css文件吗

此后,我从以下位置调整了一个servlet映射:

<servlet-mapping>
    <servlet-name>startupservlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

startupservlet
/
致:


startupservlet
/福
现在css工作得很好。但我不确定为什么这种映射会产生影响


据我所知,
/
仅适用于未指定路径的情况,但是,对
style.css的请求应构成路径?

我相信您的问题是servlet映射到/

默认情况下,Tomcat将/映射到其提供静态内容的DefaultServlet。当您映射/到servlet时,它似乎覆盖了整个DefaultServlet行为。它作为一个/*映射,尽管它看起来应该只处理/

我不确定这是错误还是功能。:)

解决方案可能是将/servlet映射更改为/home,然后使用欢迎文件映射来引用该映射

<servlet-mapping>
    <servlet-name>startupservlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>startupservlet</servlet-name>
    <url-pattern>/foo</url-pattern>
</servlet-mapping>