サーブレットと Velocity テンプレートは初めてで、.vm テンプレートを .css ファイルにリンクしようとしています。.vm ファイルと css ファイルは、Tomcat の ROOT ディレクトリにあります。ファイル自体は正常に表示されますが、css は機能しません。
次のリンクは機能しません。
<link rel="stylesheet" type="text/css" href="style.css"/>
ファイル名を属性として渡すこともありません。
String stylesheet = "style.css";
req.setAttribute("stylesheet", stylesheet);
そして、そのように参照します:
<link rel="stylesheet" type="text/css" href="$stylesheet"/>
また、css ファイルが確実に存在するにもかかわらず、ブラウザーでその 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>
アプリまたは Velocity に関連する css ファイルを参照する必要がありますか?
それ以来、次のサーブレット マッピングの 1 つを調整しました。
<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>
これでcssは正常に動作します。しかし、なぜこのマッピングがまったく効果を発揮していたのかはわかりません。
私が理解しているように<url-pattern>/</url-pattern>
、パスが指定されていない場合にのみ適用されますが、リクエストはstyle.css
パスを構成する必要がありますか?