Java tutorial
/** * Copyright 2013 Trend Micro Incorporated * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.tcloud.bee.key.server.jetty.config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.thymeleaf.spring3.SpringTemplateEngine; import org.thymeleaf.spring3.view.ThymeleafViewResolver; import org.thymeleaf.templateresolver.ServletContextTemplateResolver; /** * The SpringMVC application context. * * This is the annotation variation of configuring the SpringMVC application * context. An XML configuration is imported so XML based configuration can * still be used. * * Any @Controller classes will be picked up by component scanning. All other * components are ignored as they will be picked up by the root application * context. * * @author howie_yu * */ @EnableWebMvc @Configuration @EnableAsync @ComponentScan(basePackages = { "org.apache.hadoop.io.crypto.bee.key.server.mvc.controller" }) @ImportResource({ "classpath:META-INF/spring/servlet-context.xml" }) public class MvcConfiguration extends WebMvcConfigurerAdapter { final Logger logger = LoggerFactory.getLogger(getClass()); /** * @See http://www.webjars.org/documentation */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Override public void addViewControllers(ViewControllerRegistry registry) { /* Mapping to the login view. */ logger.trace("Add views..."); registry.addViewController("/login").setViewName("login"); registry.addViewController("/accessDenied").setViewName("accessDenied"); registry.addViewController("/test").setViewName("test"); registry.addViewController("/keymgmt").setViewName("keymgmt"); } /** * Allow the default servlet to serve static files from the webapp root. * * @param configurer */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } // @Bean // public InternalResourceViewResolver jspViewResolver() { // InternalResourceViewResolver resolver = new InternalResourceViewResolver(); // resolver.setPrefix("/WEB-INF/jsp"); // resolver.setSuffix(".jsp"); // return resolver; // } @Bean public ServletContextTemplateResolver thymeleafTemplateResolver() { ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".html"); resolver.setTemplateMode("HTML5"); resolver.setCacheable(true); return resolver; } @Bean public SpringTemplateEngine thymeleafTemplateEngine() { SpringTemplateEngine engine = new org.thymeleaf.spring3.SpringTemplateEngine(); engine.setTemplateResolver(thymeleafTemplateResolver()); return engine; } @Bean public ThymeleafViewResolver thymeleafViewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(thymeleafTemplateEngine()); resolver.setOrder(1); return resolver; } }