2012-12-04 2 views
6

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

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

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

は誰にもこの問題が発生していますか?


下記のコメントの例:

<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> 

答えて

10

それはあなた方に依存(ちょうどあなたがまあ、Mavenを指定していないことに気付きました)アプリケーションを実行します。 SpringSource IDE(STS)から「Run on Server」を選択したとしますか? STSでサーバー定義をダブルクリックすると、「モジュール」タブが表示されます。そこから、あなたは "パス"を編集し、あなたが望むものにそれを設定することができます。 「サーバー上で実行する」を選択すると、STSはコンテキストパスを定義し、既定のパッケージの最後の要素に単純に既定値を設定する必要があります。正しくリコールすれば、デフォルトでは、Tomcatは圧縮または展開された.warのファイル名を使用します。どちらの場合でも、あなたはそれを乗り越えることができます。

希望に役立ちます。

+0

あなたの前提は正確で、それはまさに私が探していたものです。どうもありがとうございました! – littleK

+0

良い答え、私の問題を解決+1 – SpringLearner

0
STSわから

ないが、warファイル名がポンポンファイルに設定されています。

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

3

hostとportの後のURLの最初の部分は、context-pathと呼ばれます。あなたの場合myapp。 tomcatでは、context-pathはwar-fileの名前と同じです。あなたがwar-file ROOT.warという名前をつけた場合、はありません。 context-pathが使用されています。

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

しかし、あなたのアプリをcontext-pathから独立させることができます。あなたは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コードでは:または、あなたは変数に格納し、後でそれを使用することができ

要求は現在 HttpServletRequestオブジェクトです
request.getContextPath() 

。 これを使用すると、アプリケーションを実際のコンテキストパスから完全に独立させることができ、展開が簡単になります。

+0

それは非常に有益だった、ありがとう。私はアプリケーション名を自分のURLに厳密にコード化する必要がない方法を見ていました。それはそのトリックを行うようです!ありがとう! – littleK

+0

フロリアン、もう1つ質問です。私はまた、私はコンテキストパスで私はハードコードapplicationContext - security.xmlにいくつかのURLがあります。 URLをBeanの定義に相対的にするための推奨される方法を知っていますか? – littleK

+0

どのようなURLですか?それが春のセキュリティの場合は、context-pathなしで相対URLを指定するだけです:

関連する問題