私はJavaサーブレット(PHP-Zendから来た)を初めて使用し、静的コンテンツ(js、cssなど)を取得するためにいくつかの問題に直面しています。
まず、プロジェクトのフォルダー構造は次のとおりです。
com.a.b.c.servlet
bin
com
...
LoginServlet.class
ResourceServlet.class
resources
languages
templates
login.html
static
css
style.css
js
script.js
src
com
...
LoginServlet.java
ResourceServlet.java
WebContent
META-INF
WEB-INF
まず、このように動作する静的コンテンツを取得するためのリソース サーブレットを作成しました....
InputStreamReader resource = new InputStreamReader(getServletContext().getResourceAsStream("/WEB-INF/resources/static" + request.getPathInfo()), "UTF-8");
OutputStream out = response.getOutputStream();
for ( int c; ( c = resource.read() ) != -1; )
out.write(c);
}
...しかし、画像に問題があるため、ベストプラクティスを探したところ、これが見つかりました:
https://stackoverflow.com/a/2129960/363323
オプション 3 は私には良いオプションのように思われるので、この行を web.xml に追加しました (そして ResourceServlet マッピングを削除しました)。
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ResourceServlet</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
しかし、リソースがロードされていません...次のようないくつかのパスを試しました
<link rel="stylesheet" href="static/css/style.css" />
<link rel="stylesheet" href="css/style.css" />
また、静的フォルダーを別の場所に置きます....
何か案が?