7

SpringSourceIDEを使用してSpringMVCテンプレートプロジェクトを作成するとき、アプリケーションを実行すると、ルートURLがデフォルトのパッケージ名の最後の単語として設定されます。

たとえば、プロジェクトを作成するときに、デフォルトのパッケージをに設定しますcom.sample.myapp。アプリケーションを実行すると、で開きますhttp://localhost:8080/myappMyProjectルートURLが代わりに私のプロジェクト名を使用しないのはなぜですか?

アプリケーションですべてのURLを指定する必要があるため、これは問題ですが/myapp/resources/css/mycss.css、.warをエクスポートしてTomcatサーバーにデプロイすると、Tomcatは代わりにプロジェクト名を期待します(使用する必要があります/MyProject/resources/css/mycss.css。その結果、デプロイするとすべてのリンクが壊れます(ただし、SpringSource IDE内でtomcatをローカルで実行した場合は壊れません...)

他の誰かがこの問題に遭遇しましたか?


以下のコメントディスカッションの例:

<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
    <property name="service"
        value="https://localhost:8443/MyProject/j_spring_cas_security_check" />
    <property name="sendRenew" value="false" />
</bean>
4

3 に答える 3

12

アプリケーションの実行方法によって異なります。SpringSource IDE(STS)内から「サーバー上で実行」を選択したと思いますか?STSでサーバー定義をダブルクリックすると、「モジュール」タブが表示されます。そこから、「パス」を編集して、好きなように設定できます。[サーバーで実行]を選択すると、STSはコンテキストパスを定義する必要があり、デフォルトでデフォルトパッケージの最後の要素になります。正しく思い出せば、デフォルトでは、Tomcatはzip形式または展開された.warのファイル名を使用します。どちらの場合でも、オーバーライドできます。

お役に立てば幸いです。

于 2012-12-04T15:24:31.853 に答える
3

ホストとポートの後のURLの最初の部分は、コンテキストパスと呼ばれます。あなたの場合、myapp。Tomcatでは、context-pathはwarファイルの名前と同じです。warファイルにROOT.warという名前を付けると、コンテキストパスは使用されません。

bimsapiが述べたように、STSのコンテキストパスも変更できます。

ただし、アプリをコンテキストパスから独立させることができます。JSPを使用している場合は、次の<c:url />タグを使用してリンクを作成します。

<c:url value="/resources/css/mycss.css" />

これにより、実際のコンテキストパスを含む正しいURLが出力されます。または、変数に保存して後で使用することもできます。

<c:url value="/items/index" var="cancel-url" />
<a href="${cancel-url}">Cancel</a>

Javaコードでは、次のコマンドでコンテキストパスを取得できます。

request.getContextPath()

ここで、requestは現在のHttpServletRequestオブジェクトです。これを使用すると、アプリが実際のコンテキストパスから完全に独立し、デプロイが大幅に簡素化されます。

于 2012-12-05T06:18:27.167 に答える
0

STSについてはわかりませんが、warファイル名はpomファイルに設定されています:

</dependencies>    
<build>
<finalName>yourProject</finalName>

(Mavenを指定しなかったことに気づきました)

于 2012-12-04T14:57:33.090 に答える