Thymeleaf is an alternative as replacement of JSP, please visit http://www.thymeleaf.org/ for the further information about thymeleaf. Now I will show you how to integrate Spring MVC and Thymeleaf.
Maven Dependency :
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>2.1.4.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency>
and the Java Configuration :
@Configuration @EnableWebMvc @ComponentScan(basePackages = { "com.hidupbersahaja.controller" }) public class WebappConfig extends WebMvcConfigurerAdapter{ private org.apache.commons.configuration.Configuration _config = ConfigManager.getConfiguration(); /** * Servlet Context Template Resolver * @return */ @Bean public ServletContextTemplateResolver getServletContextTemplateResolver(){ ServletContextTemplateResolver scTemplateResolver = new ServletContextTemplateResolver(); scTemplateResolver.setPrefix("/WEB-INF/templates/"); scTemplateResolver.setSuffix(".html"); scTemplateResolver.setTemplateMode("HTML5"); return scTemplateResolver; } /** * Spring Template Engine * @return */ @Bean public SpringTemplateEngine getTemplateEngine(){ SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(getServletContextTemplateResolver()); return templateEngine; } /** * Thymeleaf View Resolver * @return */ @Bean public ThymeleafViewResolver getThymeleafViewResolver(){ ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(getTemplateEngine()); resolver.setOrder(1); return resolver; } /** * Content Negotiate * to allowing request and respond content type * such as html, xml, json */ @Override public void configureContentNegotiation( ContentNegotiationConfigurer configurer) { configurer.defaultContentType(MediaType.TEXT_HTML) .mediaType("json", MediaType.APPLICATION_JSON) .mediaType("xml", MediaType.APPLICATION_XML) .favorPathExtension(true) .ignoreAcceptHeader(false); } }
and the Controller side :
@Controller @RequestMapping("/faq") public class FAQController { /** * default handler * * @return faq.html */ @RequestMapping(method = RequestMethod.GET) public String defaultHandler(Model model) { return "faq"; } }
Create faq.html inside /WEB-INF/templates/ directory
<!doctype html> <html lang="en"> <head> </head> <body> <h2>I am using Thymeleaf, how about you ? </h2> </body> </html>
That’s all … Good Luck