发表于: 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.
评论