14

RequestMappingSpring MVC では、すべてのコントローラーとメソッド/アクションでどのように設定するかを知っています。

しかし、これを構成可能にしたい場合はどうでしょう。たとえば、次のコントローラーを使用します。

BlogController 
 - with methods for listing blogs entries, single entry, new, update, etc.
ArticleController
 - with methods for listing articles entries, single entry, new, update, etc.

私のアプリケーションでは、管理者は webiste 用に 2 つのブログと 1 つの記事セクションをセットアップできるため、URL は次のようになります。

www.example.com/article_section1/ - uses ArticleController
www.example.com/blog1/ - uses BlogController
www.example.com/blog2/ - uses BlogController

しばらくすると、管理者は別の記事セクションが必要になる可能性があるため、次のような新しいセクションで構成するだけです。

www.example.com/article_section2/

もちろん、これはアプリケーションを再起動することなく動的/オンザフライで機能する必要があります。

私の質問は、コントローラーへの URL マッピングをどのように処理するかについてのみです。

これはSpring MVCでどのように可能になるでしょうか?

@RequestMapping("/helloWorld")コントローラーまたはメソッドレベルで使用してURLをコントローラーにマップする方法しか知りませんが、これによりURLマッピングが固定され、希望どおりに構成できなくなります。

アップデート:

パスをデータベースに保存し、コントローラーのタイプへのマッピングを次のようにします。

path                  controller
/article_section1/    article
/blog1/               blog
/blog2/               blog
..

上記の情報を使用して、正しいコントローラーにリクエストをディスパッチするにはどうすればよいでしょうか?

繰り返しますが、リロード/再デプロイを検討していません。これにはさらに多くの作業が必要になることはわかっていますが、仕様には含まれています:)

4

5 に答える 5

5

この種の URL マッピングはうまくいきますか?

www.example.com/blog/1/
www.example.com/blog/2/

はいの場合、それは簡単です。Spring 3 はパス変数をサポートしています: http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

別の方法として、一般的なリクエスト マッピングと、構成ファイルを読み取る独自のサブディスパッチャを作成することもできますが、おそらくそれは価値がある以上の作業になると思います。

于 2012-10-03T14:13:54.317 に答える
2

実行時にリクエスト マッピングを実際に変更するのは難しい場合があります (小さなエラーが発生しやすいため、あまりお勧めしません)。それでもやりたい場合は、おそらく JRebel、より具体的には LiveRebel は、コードと構成のライブ再デプロイにとって興味深いものになる可能性があります。

それ以外の場合は、他の投稿で提案されているように、RequestMappings はワイルドカードをサポートしています。これの制限は、公式ドキュメントをすばやく読んだ後に明確になるはずです。

于 2012-10-03T14:21:35.787 に答える
1

以下のように @RequestMapping ワイルドカードを使用してみてください。

@RequestMapping(value="/article_section*/"}
public void getArticle(....){
//TODO implementation
}

@RequestMapping(value="/blog*/"}
public void getBlog(....){
//TODO implementation
}

お役に立てれば!!!

于 2014-04-01T19:15:44.127 に答える
0

これは機能しませんか?@RequestMapping("/helloWorld*")

于 2012-10-03T14:15:08.180 に答える