2012-02-15 4 views
0

ポート8080で単純なJava HTTPServerを使用したプロジェクトを、Spring MVCサーブレットフレームワークを使用するプロジェクトに変更しています。Spring MVCのアプリケーションとの相対的なリンク(href)はありませんか?

そうのようなアプリケーションのリンクがたくさんあります。私は、サーブレットを入れない限り、しかし、これらは現在動作しません

http://localhost:8080/send 

次のような要求を使用してうまく働い

<a href=\"/rule\">Manage rules</a><br/> 

は、正面の名前は次のようになります。

"<a href=\"/ServletName/rule\">Manage rules</a><br/>" 

これを回避する方法はありますか?すべてのhrefリンクを変更して、その前にサーブレット名を追加するだけですか?

私は@RequestMappingメソッドの開始時にサーブレット名を追加する必要はありません。問題の唯一のリンクです。例えば。これは前に

@RequestMapping(value = "/send", method = RequestMethod.GET) 
+0

URLタグを使用しますか? –

+0

すべてのhrefリンクは、現在のコンテキストに関連しています。 Apacheサーバーを使用している場合は、アプリケーションサーバーにヒットする前に、すべての要求にサーブレット名を含めるように、Apacheサーバーを構成できます。 –

答えて

5

をサーブレット名を追加することなく、正常に動作し、あなたのビュー層にJSPを使用する場合は、リンクタグ(または1つを自分で書く)を持つタグライブラリを使用します。基本的には、リンクタグを実行してURLを作成する必要があり

HttpServletResponse.encodeURL(originalUrl) 

JSTLで<c:url>タグがあることありませんが、それはURLのみではなく、リンクタグを生成しますが、それはこのようにそこにあなたを得ることができます:

<c:url value="your/relative/url" var="somevar" /> 
<a href="${somevar}">Link Text</a> 
+0

こんにちは、私は恐れているJSPを使用していません。私はXMLファイルを使ってこれを行う方法があると思った。おそらくweb.xmlやapplicationContext.xmlなどのURLを書き直すのだろうか? – Rory

+0

@Roryよくレイヤーを見て何をしますか? Javaコードから直接出力しているとは言わないでください。 –

+0

Yep .. httpServletResponse.getWriter.write( "); – Rory

関連する問題