Java Spring引导不呈现JSP视图
我使用Spring Boot 1.5.3.0版本。这是classJava Spring引导不呈现JSP视图,java,spring,jsp,spring-mvc,spring-boot,Java,Spring,Jsp,Spring Mvc,Spring Boot,我使用Spring Boot 1.5.3.0版本。这是classMVC配置 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
MVC配置
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.
但是webapp返回纯JSP文本:
我在
build.gradle
中添加了必要的依赖项。我更喜欢在独立的Tomcat上运行web应用程序。如何修复它?您需要为tomcat嵌入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')
}
gradle bootRun
现在,您可以像下面这样运行Spring引导应用程序
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')
}
gradle bootRun
如果您想在独立的tomcat中部署,那么不要添加tomcat嵌入jasper
依赖项。在war文件中需要jstl
jar
gradle build
根据Spring Boot文档: 如果可能的话,应该避免使用JSP,在将JSP与嵌入式servlet容器一起使用时,存在一些已知的限制 以下是链接:
您是否参考了此is源代码上共享的示例项目:可能与我重复添加了必要的依赖项:您是否尝试查看此处: