spring mvc webapp を機能させるのに問題があります。私は、Jetty サーバーが組み込まれた Spring MVC を使用しています。
問題は、mvc:resources タグが機能しないことです。理由がわかりません。
タグは次のとおりです。
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="js/"/>
私のディレクトリ構造:
- ソース
- 主要
- ジャワ
- 資力
- メタINF
- アプリケーションコンテキスト.xml
- web-context.xml
- メタINF
- ウェブアプリ
- CSS
- main.css
- js
- main.js
- CSS
- 主要
に移動するとhttp://localhost:8080/css/main.css
、デバッグ出力に次のように表示されます。
Looking up handler method for path /css/main.css
Did not find handler method for [/css/main.css]
URI Template variables for request [/css/main.css] are {}
Mapping [/css/main.css] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.ResourceHttpRequestHandler@223c78ba] and 1 interceptor
Last-Modified value for [/css/main.css] is: -1
Trying relative path [main.css] against base location: ServletContext resource [/css/]
No matching resource found - returning 404
なぜこれが機能しないのですか? それは私のディレクトリ構造ですか、それとも構成が欠けていましたか?
よろしくお願いします。
編集詳細情報
Maven を使用して、shade プラグインでファット jar を作成します。これを pom.xml に追加しました
<resources>
<resource>
<directory>src/main/webapp</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
最終的な jar には css ディレクトリが含まれていますが、まだ運がありません。
これは、組み込みの jetty サーバーを起動するための私のコードです
int port = config.getInt("server.port");
final Server server = new Server();
final ServerConnector serverConnector = new ServerConnector(server);
serverConnector.setPort(port);
server.setConnectors(new Connector[]{serverConnector});
final DispatcherServlet servlet = new DispatcherServlet();
servlet.setContextConfigLocation("classpath:META-INF/web-context.xml");
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addServlet(new ServletHolder("defaultServlet", servlet), "/*");
HandlerCollection handlers = new HandlerCollection();
handlers.setHandlers(new Handler[]{context, new DefaultHandler()});
server.setHandler(handlers);
server.start();
server.join();