Apache MVCとApache Tilesの統合

Spring MVCとのApache Tilesの統合

1. 概要

ApacheTilesは、純粋にコンポジットデザインパターンに基づいて構築された無料のオープンソーステンプレートフレームワークです。

複合デザインパターンは、オブジェクトをツリー構造に構成して全体の階層を表す構造パターンの一種であり、このパターンは個々のオブジェクトとオブジェクトの構成を均一に処理します。 つまり、タイルでは、タイルと呼ばれるサブビューのコンポジションを組み立てることでページが構築されます。

他のフレームワークに対するこのフレームワークの利点は次のとおりです。

  • 再利用性

  • 設定が簡単

  • 低パフォーマンスのオーバーヘッド

この記事では、integrating Apache Tiles with Spring MVCに焦点を当てます。

2. 依存関係の構成

ここでの最初のステップは、必要なdependencypom.xmlに追加することです。


    org.apache.tiles
    tiles-jsp
    3.0.8

3. タイルレイアウトファイル

次に、テンプレート定義を定義する必要があります。具体的には、各ページごとに、その特定のページのテンプレート定義を上書きします。


    
        
        
        
        
        
    
    
        
        
    

4. ApplicationConfigurationおよびその他のクラス

構成の一部として、ApplicationInitializerApplicationController、およびApplicationConfigurationと呼ばれる3つの特定のJavaクラスを作成します。

  • ApplicationInitializerは、ApplicationConfigurationクラスで指定された必要な構成を初期化してチェックします

  • ApplicationConfigurationクラスには、SpringMVCをApacheTilesフレームワークと統合するための構成が含まれています

  • ApplicationControllerクラスはtiles.xmlファイルと同期して動作し、着信要求に基づいて必要なページにリダイレクトします

実行中の各クラスを見てみましょう。

@Controller
@RequestMapping("/")
public class TilesController {
    @RequestMapping(
      value = { "/"},
      method = RequestMethod.GET)
    public String homePage(ModelMap model) {
        return "home";
    }
    @RequestMapping(
      value = { "/apachetiles"},
      method = RequestMethod.GET)
    public String productsPage(ModelMap model) {
        return "apachetiles";
    }

    @RequestMapping(
      value = { "/springmvc"},
      method = RequestMethod.GET)
    public String contactUsPage(ModelMap model) {
        return "springmvc";
    }
}
public class WebInitializer implements WebApplicationInitializer {
 public void onStartup(ServletContext container) throws ServletException {

        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();

        ctx.register(TilesApplicationConfiguration.class);

        container.addListener(new ContextLoaderListener(ctx));

        ServletRegistration.Dynamic servlet = container.addServlet(
          "dispatcher", new DispatcherServlet(ctx));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}

Spring MVCアプリケーションでタイルを構成する上で重要な役割を果たす2つの重要なクラスがあります。 それらはTilesConfigurerTilesViewResolverです:

  • TilesConfigurerは、タイル構成ファイルへのパスを提供することにより、タイルフレームワークをSpringフレームワークにリンクするのに役立ちます。

  • TilesViewResolverは、タイルビューを解決するためにSpringAPIによって提供されるアダプタークラスの1つです。

最後に、ApplicationConfigurationクラスでは、TilesConfigurerクラスとTilesViewResolverクラスを使用して統合を実現しました。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.spring.controller.tiles")
public class TilesApplicationConfiguration implements WebMvcConfigurer {
    @Bean
    public TilesConfigurer tilesConfigurer() {
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        tilesConfigurer.setDefinitions(
          new String[] { "/WEB-INF/views/**/tiles.xml" });
        tilesConfigurer.setCheckRefresh(true);

        return tilesConfigurer;
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        TilesViewResolver viewResolver = new TilesViewResolver();
        registry.viewResolver(viewResolver);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
          .addResourceLocations("/static/");
    }
}

5. タイルテンプレートファイル

これまで、Apache Tilesフレームワークの構成と、アプリケーション全体で使用されるテンプレートと特定のタイルの定義を完了しました。

このステップでは、tiles.xmlで定義されている特定のテンプレートファイルを作成する必要があります。

特定のページを構築するためのベースとして使用できるレイアウトのスニペットを見つけてください:


    
        
        <tiles:getAsString name="title" />
        
        
    
    
        

6. 結論

これで、Spring MVCとApache Tilesの統合が完了しました。

完全な実装はfollowing github projectにあります。