Spring MVC ParameterizableViewControllerの例
一般に、Spring MVCアプリケーションでビューまたはページを返すには、AbstractControllerを拡張するクラスを作成し、ModelAndView()オブジェクトを返す必要があります。
public class WelcomeController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView model = new ModelAndView("WelcomePage");
return model;
}
}
Bean構成ファイルで、マッピングを自動検出するためにControllerClassNameHandlerMappingを宣言しました。
しかし、単純なリダイレクトタスクには設定が多すぎると思いませんか? 幸い、Springには上記のプロセスを簡素化するためのParameterizableViewControllerが付属しています。 ParameterizableViewControllerを使用すると、コントローラークラスにビュー名をハードコーディングする必要がなくなります。代わりに、ParameterizableViewControllerの「viewName」プロパティを使用してビュー名を宣言的に配置します。
Note
ParameterizableViewControllerはAbstractControllerのサブクラスであり、「viewName」プロパティに基づいてModelAndViewを返します。it’s purely a redirect class、それ以上でもそれ以下でもありません:)
ParameterizableViewController.java
public class ParameterizableViewController extends AbstractController{
//...
protected ModelAndView handleRequestInternal(
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return new ModelAndView(getViewName());
}
チュートリアル
このチュートリアルでは、ParameterizableViewControllerコントローラーを使用してSpringMVCアプリケーションでページリダイレクトを実行する方法を示します。
1. ParameterizableViewController
コントローラクラスは必要ありません。ParameterizableViewController Beanを宣言し、「viewName」プロパティを使用してビュー名を指定するだけです。 さらに、明示的なマッピングを定義する必要があります。
welcomeController /WEB-INF/pages/ .jsp
明示的なマッピングを定義する必要があります。
//... //...
上記のスニペットでは、ビュー名「welcome」が「WelcomePage」を返すと予想していますか? 申し訳ありませんが、そうではありません。ControllerClassNameHandlerMappingは、組み込みのSpring MVCコントローラーのマッピングを生成しないため、explicit mappingを定義する必要があります。
2. View
見出しを表示するための単純なJSP。
WelcomePage.jsp.jsp
ParameterizableViewController Example
3. Demo
「http://localhost:8080/SpringMVC/welcome.htm」を介してアクセスすると、「welcome.htm」は「/WEB-INF/pages/WelcomPage.jsp」を返します。
