我使用Spring Boot 1.5.3.RELEASE。这是课程MvcConfiguration
package hello;
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.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import java.util.Locale;
@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {
private static final Logger logger = LoggerFactory.getLogger(MvcConfiguration.class);
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
logger.info("Register ViewResolver success.");
return resolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("locale");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
super.addInterceptors(registry);
}
}
控制器:
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(path = "/")
public class HomeController {
@RequestMapping(method = RequestMethod.GET)
public String home(){
return "currency";
}
}
调试应用时,我看到日志
2017-05-02 07:41:48.970 INFO 3333 --- [ main] hello.MvcConfiguration : Register ViewResolver success.
我在build.gradle
添加了必要的依赖项。我更喜欢在独立的Tomcat上运行Web应用程序。如何解决?
答案 0 :(得分:1)
您需要为tomcat-embed-jasper
添加依赖项。 build.gradle
文件中的依赖关系应如下所示。
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
// JPA Data (We are going to use Repositories, Entities, Hibernate, etc...)
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'mysql:mysql-connector-java'
compile 'javax.servlet:jstl:1.2'
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'
testCompile('org.springframework.boot:spring-boot-starter-test')
}
现在您可以运行如下的Spring Boot应用程序。
gradle bootRun
如果要在独立的tomcat中部署,则不要添加tomcat-embed-jasper
依赖项。你的war文件中需要jstl
jar。
gradle build
答案 1 :(得分:1)
根据Spring Boot文档:
如果可能,应该避免使用JSP,将它们与嵌入式servlet容器一起使用时有几个已知的限制。
这是链接: