2

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
      • ウェブアプリ
        • CSS
          • main.css
        • js
          • main.js

に移動すると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();
4

3 に答える 3