发表于: 2017-06-08 15:36:32

3 1195


今日完成:Spring MVC 整合 Apache Tiles

先是度娘了下Apache Tiles,感觉这框架很古老了,很多人拿它和Thymeleaf比较。两个我都不会,不过大多数人觉得Thymeleaf坑多(也许是因为不会用吧)据说Spring比较挺Thymeleaf。这样一个框架一个框架的学。。。感觉好恨Java。


首先Maven加入Tiles3的Dependency

<dependency>

    <groupId>org.apache.tiles</groupId>

    <artifactId>tiles-extras</artifactId>

    <version>3.0.7</version>

</dependency>

目前最新版本3.0.7好像是2016年发布的。

除了引入Tiles别忘记引入servlet 和 jsp 以及jstl的dependency


第二步,配置Spring MVC,我选择了java code 配置

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override

    protected Class<?>[] getRootConfigClasses() {

        // Root spring context configuration

        return null;

    }

    @Override

    protected Class<?>[] getServletConfigClasses() {

        // Webapp spring context configuration

        return new Class[] {WebConfig.class };

    }

    @Override

    protected String[] getServletMappings() {

        //mapping dispatcher servlet to root url "/"

        return new String[] { "/" };

    }

}


RootConfig和WebConfig.class都是Spring配置文件,用来配置不同的bean。项目中多使用RootConfig配置也写持久层的通用bean。WebConfig多配置Service层和View层的Bean。在本文中简化了RootConfig配置,所以只返回null。主要的配置都放在了WebConfig中。具体如下,

@Configuration

@EnableWebMvc

public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean

    public TilesConfigurer tilesConfigurer() {

        TilesConfigurer tilesConfigurer = new TilesConfigurer();

        tilesConfigurer.setDefinitions(

                new String[]{"/WEB-INF/views/**/tiles.xml"});

        tilesConfigurer.setCheckRefresh(true);

        return tilesConfigurer;

    }

    @Bean

    public InternalResourceViewResolver internalResourceViewResolver() {

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();

        resolver.setPrefix("/WEB-INF/views/jsp/");

        resolver.setSuffix(".jsp");

        return resolver;

    }

    

    @Bean

    public AppController appController() {

        return new AppController();

    }

}

我们只需要在WebConfig.class中放入对TilesConfigurer bean的声明即可。ViewResolverRegistry class会自动检测WebConfig里面是否有TileConfigurer bean,如果有,则会自动将TilesViewResolver加入配置。

TilesConfigurer是用来解析Tiles的。而InternalResourceViewResolver是用来解析JSP的。

这里并没有使用ComponentScan,而是手动配置了Controller bean,纯属个人喜好。

到现在,我们的webapp项目就已经可以使用Tiles了。


明日任务:争取完成任务4.




返回列表 返回列表
评论

    分享到