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」を返します。