4

次のディレクトリ構造を持つ Java Spring MVC Web アプリがあります。

src/
    main/
        java/
        resources/
        webapp/

私の webapp フォルダーには、javascript スクリプトを含む多数の html ファイルがあります。javascript を html に埋め込むのではなく、外部化したいと考えています。上記のファイル構造のどこに javascript ファイルを配置する必要がありますか? pom.xml および/または servlet-context.xml (Spring) ファイルに追加する必要がある構成は何ですか?

4

3 に答える 3

2

上記の回答と他のいくつかのSO投稿を読んだ後、私は2つの解決策に到達しました。

Spring MVCを使用していて、DispatcherServletrootにマップされてい/ます。これは、何かに対する要求はすべてそれを通過することを意味しますが、リソースファイルを提供するコントローラーがありません。あなたができることは、のDispatcherServletようなものにマップすることです/app/*。次に、次のようなすべての通常のURL

http:\\localhost:8080\ContextRoot\users

でアクセス可能になります

http:\\localhost:8080\ContextRoot\app\users

その後、に行くことができます

http:\\localhost:8080\ContextRoot\static\js\file.js

そして、Apacheサーバー(または使用しているもの)からリソースファイルが提供されます。

DispatcherServletSpringの人たちはおそらくこれを問題と見なし、でマップされたままで独自の解決策を作成しました/servlet.xmlファイルに追加する必要があります

<mvc:resources location = "/static/" mapping = "/static/**" />

あなたのフォルダstaticはフォルダの下にありますwebapp。このタグは、SpringMVCにに行くものすべてのための特別なハンドラーを持つように指示し/static/ます。あなたも必要です

<mvc:annotation-driven>

そうしないと、Controllersハンドラーメソッドが前のタグのハンドラーと混同され、何も機能しなくなります(少なくとも私にとっては機能しませんでした)。

私はこれらの両方を試しましたが、両方とも機能しましたが、ビューのアンカーがルートにマップされていて、すべてを修正する気がなかったため、2番目のものを選びました。あなたのリンクを相対的なものにしてください、人々!

于 2012-12-05T21:08:44.053 に答える
1

一般的な方法は、それらを新しく作成した静的ディレクトリの下に置くことです

webapp/static/js

そしてそれを参照してください/webcontext/static/js/somefile.js

于 2012-12-05T17:55:40.937 に答える
0

通常の Maven プロジェクトを作成した後は、次のような新しいフォルダーを (STS\Eclipse で) 作成するだけでよいと思います。

webapp/static/js

javascript は Maven によって処理されないため (Maven を使用して新しい Java 依存関係を追加し、それをコンパイルします...Javascript はビュー コードにあるランタイム スクリプトであり、コンパイルされたコードはありません)

このようなフォルダーを作成できます。静的なものは、アプリケーションで使用される jpg 画像などの他のものに似ているためです。

ああ...おそらくうまく機能するには、この新しいフォルダーをプロジェクトのクラスパスに追加する必要があります。STS\Eclipse で: プロジェクトの名前を右クリック ---> プロパティ ---> Java ビルド パス ---> ソース タブ ---> フォルダーをクリック ---> 持っている新しいフォルダーを追加します。作成した

于 2012-12-05T19:14:11.357 に答える